为建立连接,必须马上调用connect()如下,由于先调用了WSAASyncSelect(),connect()便是
非阻塞调用.进程发出连接请求后就不管了,当连接建立好后,WINSOCK DLL自动发一条消息给
主窗口函数,以使程序运行下去.
connect(s, (struct sockaddr FAR *)&dst_addr, sizeof(dst_addr));
窗口函数在收到UM_SOCK消息后,判断是由哪个网络事件引起的,第一次,必然是由连接事
件引起的,这样,就会执行相应的程序段,同样调用SetSelect()来提名FD_WRITE事件.希望在套
接口可发送数据时接到消息.在收到FD_WRITE消息时,先调用send()发送数据,再调用
SetSelect()来提名FD_READ事件, 希望在套接口可接收数据是接到消息.在收到FD_READ消
息时,先调用recv()来接收数据再提名FD_WRITE事件,如此循环下去.直到发生连接关闭的事件
FD_CLOSE,这时就调用WSAAsyncSelect(s,hWnd,0,0)来停止异步选择.在窗口函数接到
WM_DESTROY消息时(即关闭窗口之前),先调用closesocket()(作用同UNIX 中的close())来关
闭套接口,再调用WSACleanup()终止Windows Sockets DLL,并释放资源.