📄 subject_24977.htm
字号:
<p>
序号:24977 发表者:111 发表日期:2002-12-18 11:10:35
<br>主题:用过WSAAsyncSelect的请指教
<br>内容:client端主动connect server端。<BR>client端如何用FD_READ读server端的send数据。<BR><BR>以下是我的程序,只能收到FD_CLOSE消息,怎么也不能FD_READ。高手请指点!多谢!!!<BR>client程序:<BR>SOCKET local_sock,server_sock;<BR><BR>void ConnectServer()<BR>{<BR>int sizesock=sizeof(struct sockaddr_in);<BR>struct sockaddr_in sin;<BR>local_sock = socket(AF_INET,SOCK_STREAM,0);<BR>if(local_sock == INVALID_SOCKET) return;<BR>sin.sin_family=AF_INET;<BR>sin.sin_addr.s_addr=g_serverip;<BR>sin.sin_port=htons(CONNECT_PORT);<BR>server_sock=connect (local_sock, (struct sockaddr*)&sin, sizeof (sin));<BR>if(server_sock== SOCKET_ERROR)<BR>{<BR>closesocket (local_sock);<BR> return;<BR>}<BR>if(WSAAsyncSelect(local_sock,MyWindow->m_hWnd,VTM_DATAREADY,FD_READ|FD_CLOSE)==SOCKET_ERROR)<BR>{<BR> closesocket (local_sock);<BR> return;<BR> }<BR>}<BR>void CCMainWnd::OnVTReadData(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)<BR>{<BR>char buf[10];<BR>switch(LOWORD(lParam))<BR>{<BR>case FD_CLOSE:<BR> closesocket (local_sock);<BR> break;<BR>case FD_READ:<BR> recv(local_sock,buf,1,1);<BR> break;<BR>}<BR>}<BR><BR>server端程序:<BR>void CWyjserverDlg::OnButton1() <BR>{<BR>int ret,sizesock=sizeof(struct sockaddr_in);<BR>WSADATA wsd;<BR>struct sockaddr_in local;<BR>struct sockaddr remote;<BR>SOCKET sockM,new_fd;<BR>struct in_addr; <BR>if (WSAStartup(MAKEWORD(1, 1), &wsd) != 0) return;<BR>if ((sockM = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET){WSACleanup();return;}<BR>local.sin_family = AF_INET;<BR>local.sin_port = htons(CONNECT_PORT);<BR>local.sin_addr.s_addr =htonl(INADDR_ANY);<BR>if(bind(sockM,(struct sockaddr * ) &local,sizeof(struct sockaddr))==SOCKET_ERROR){closesocket(sockM);WSACleanup();return;}<BR>if(listen(sockM,10)==SOCKET_ERROR){closesocket(sockM);WSACleanup();return;}<BR>new_fd=accept(sockM,&remote,(int *)&sizesock);<BR>ret=send(new_fd,"1",1,1);<BR>}
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:中国娃娃 回复日期:2002-12-18 12:07:17
<br>内容:void CCMainWnd::OnVTReadData(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)<BR>是什么东东?声明是怎么样的?在MESSAGEMAP宏里是怎么样的?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:111 回复日期:2002-12-18 12:32:09
<br>内容:能收到FD_CLOSE消息,宏是正确的,VTM_DATAREADY对应的消息处理是OnVTReadData
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:中国娃娃 回复日期:2002-12-18 12:50:25
<br>内容:宏的形式是什么样的?ON_MESSAGE(VTM_DATAREADY, OnVTReadData)还是别的?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:111 回复日期:2002-12-18 13:00:52
<br>内容:我的程序是COM程序,不是MFC的APP那种,定义是:<BR>MESSAGE_HANDLER(VTM_DATAREADY, OnVTReadData)<BR>肯定没错,因为FD_CLOSE执行了!<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:111 回复日期:2002-12-18 13:03:57
<br>内容:朋友,能用QQ聊吗?<BR>我的QQ:19082900
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -