switch(WSAGETSELECTEVENT(lParam))
{
case FD_ACCEPT: if ((Accept = accept(wParam, NULL, NULL)) == INVALID_SOCKET)
{
printf("accept() failed with error %d\n", WSAGetLastError());
break;
} // Create a socket information structure to associate with the
// socket for processing I/O. CreateSocketInformation(Accept); printf("Socket number %d connected\n", Accept); WSAAsyncSelect(Accept, hwnd, WM_SOCKET, FD_READ|FD_WRITE|FD_CLOSE); break;
解决方案 »
- 问一个关于文件操作的空间与时间的问题
- 需要电子书的进来,要多少有多少。
- CInternetSession::OpenURL函数返回什么类型的值?
- 100请问:视频采集的问题
- 紧急求援:"error RC2170 : bitmap file res\tmp1.bmp is not in 3.00 format"
- 人才需求
- 请问,我在程序中自己建立了一个视图类,但我怎样在其他的视图类中调用新视图类的成员函数呢?
- 一个vc项目的debug版好像给屏蔽掉了,只有release,怎么恢复?
- ATL编出来的dll文件,都是内部包含了tlb的完整信息的吗?
- 新手求问,关于树节点双击弹出对话框的问题
- SDK 保存bmp文件的疑问 拜谢!
- 关于2008里winnt.h的问题
FD_ACCEPT是属于服务端套接字,而Accept(这个变量名真差)是accept接受的一个和客户端链接的套接字,两者不是一个套接字
我的意思是服务器端IO 模型是WSAAsyncSelect ,那么客户端的IO 模型也一定为WSAAsyncSelect吗?
第一次调用 WSAAsyncSelect,通过异步选择这种方式将窗口与服务器套接字绑定,这样当有客户端连上来,窗口才可以收到“有客户连上来了”的消息,于是就第二次调用 WSAAsyncSelect,通过异步选择这种方式将窗口与客户端套接字绑定,这样当客户端有数据过来,窗口才能收到“有数据到达”的消息。相当于第一次调用 WSAAsyncSelect 是在服务器端建立一个登记表,用来为每个连接上来的客户端做登记,第二次调用 WSAAsyncSelect 则是在服务器与特定的客户端之间建立一个通道。所有的 SOCKET 通信过程都是这样,但是采用不同的方式来建立登记表、建立通道以及收发数据,这样就形成了不同的 IO 模型。我也是初学者。不对的地方请大家纠正。