读书人

main函数中创造隐藏窗口是不是就不能调

发布时间: 2012-09-03 09:48:39 作者: rapoo

main函数中创建隐藏窗口是不是就不能调试?

C/C++ code
//代码来自一本书, 简单的修改了, 客户端连接上后, accept哪里设置了断点,为什么不能运行到那里呢?用工具看了,确实 客户端和服务端已经连接了。。。estabilsh调试都不能,什么情况是deubg,不是realse.#include <STDIO.H>#include <winsock2.h>#include<windows.h>#pragma comment(lib, "WS2_32")    // 链接到WS2_32.lib#define WM_SOKCET (WM_USER+100)        //套接字消息//加载环境class CInitWinSock{public:    CInitWinSock(BYTE minorVer = 2, BYTE majorVer = 2)    {        // 初始化WS2_32.dll        WSADATA wsaData;        WORD sockVersion = MAKEWORD(minorVer, majorVer);        if(::WSAStartup(sockVersion, &wsaData) != 0)        {            exit(0);        }    }    ~CInitWinSock()    {        ::WSACleanup();    }};CInitWinSock g_initsock;            //全局对象SOCKET g_listenSock;            //监听套接字LRESULT WINAPI WinSunProc(HWND, UINT,WPARAM,LPARAM);int main(){            WNDCLASS win;    win.style=CS_HREDRAW | CS_VREDRAW ;//类型窗口的样式 风格 水平重画和垂直重画    win.lpfnWndProc=WinSunProc;//窗口过程函数(回调函数)函数指针        win.cbClsExtra=0;   // 一般为0   附加内存空间    win.cbWndExtra=0;   // 一般为0   窗口附加内存    win.hbrBackground=(HBRUSH)GetStockObject(0);//背景画刷句柄    win.hCursor=LoadCursor(NULL,IDC_CROSS); //光标句柄    win.hIcon=LoadIcon(NULL,IDI_ERROR); //窗口类的图标句柄    win.hInstance= NULL;        //hInstance;            //包含窗口过程的实例句柄        win.lpszClassName="11";//窗口类名    win.lpszMenuName=NULL;    /////////////////                ////////////////////////////////////////////////////////////////////////////    //定义窗口类    RegisterClass(&win);//注册窗口类        HWND hwnd;    hwnd=CreateWindow("11","zhangyongfeng",WS_OVERLAPPEDWINDOW,        100,100,600,400,NULL,NULL,NULL,NULL); //创建窗口            //创建监听套接字            USHORT nPort = 9585; // 此服务器监听的端口号        // 创建监听套节字    g_listenSock = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);    sockaddr_in sin;    sin.sin_family = AF_INET;    sin.sin_port = htons(nPort);    //    sin.sin_addr.S_un.S_addr = INADDR_ANY;    sin.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");    // 绑定套节字到本地机器    if(::bind(g_listenSock, (sockaddr*)&sin, sizeof(sin)) == SOCKET_ERROR)    {        printf(" Failed bind() \n");        return -1;    }        WSAAsyncSelect(g_listenSock,hwnd,WM_SOKCET,FD_CONNECT|FD_READ);    // 进入监听模式    ::listen(g_listenSock, 5);    //    UpdateWindow(hwnd);//    ShowWindow(hwnd, SW_SHOW);        MSG msg;        while(GetMessage(&msg, hwnd, 0,0))    {        DispatchMessage(&msg);            }    return 0;}LRESULT WINAPI WinSunProc(HWND hwnd, UINT msg,WPARAM wp,LPARAM lp){    SOCKET s=(SOCKET)wp;    switch(msg)    {    case WM_SOKCET:            {                    if(HIWORD(lp))        {            closesocket(s);            return -1;        }        switch(LOWORD(lp))        {                    case FD_ACCEPT:    //接受            {                SOCKET newSocket=accept(s,NULL,NULL);                WSAAsyncSelect(newSocket,hwnd,WM_SOKCET,FD_READ|FD_WRITE|FD_CLOSE);                break;            }                    case FD_CLOSE:            {                closesocket(s);                break;            }                    case FD_READ:            {                char buf[200];                ZeroMemory(buf,200);                int nRet=recv(s,buf,sizeof(buf),0);                printf("%s\n",buf);                break;                }        }            //end 内部switch        } //end case                                case WM_QUIT:            {                                PostQuitMessage(0);                break;            }    }        //end switch    return DefWindowProc(hwnd,msg,wp,lp);    }


[解决办法]
客户端向服务器发送消息了没有?

读书人网 >C语言

热点推荐