刚接触VC,用于编写网络传输程序,想用WSAAsyncSelect实现非阻塞方式,可是具体怎么实现却不会!具体程序如下:
HWND hwnd ;hwnd=CNormalrecDlg::GetSafeHwnd();
  
socket1=socket(AF_INET,SOCK_DGRAM,0);
bind(socket1,(struct sockaddr*)&local,sizeof(local));
WSAAsyncSelect(socket1,hwnd, WM_SOCKET,FD_READ );
并编写了相应的处理程序:
int CNormalrecDlg::Onclinetmes(HWND hwnd,UINT wParam,LONG lParam)
{
 CString str;
 char buffer[1024];
 int fromlen =sizeof(from);
switch(WSAGETSELECTEVENT(lParam))
{

   case FD_READ:
       if (recvfrom(socket1,buffer,4,0,(struct sockaddr*)&from,&fromlen)!=SOCKET_ERROR)
   {
     str.Format("%d%d%d%d",buffer[0],buffer[1],buffer[2],buffer[3]);
 //str.Format("%d",buffer[0]);
       m_show1=str;
 UpdateData(FALSE);
   }
   break;
  

} return 0;
}可是我却不知道什么时候才能调用Onclinetmes,怎么样将Onclinetmes与程序的其它部分产生关系,不知道我有没有说清楚!希望朋友们帮帮我,谢了!

解决方案 »

  1.   

    应用程序会在与hwnd窗口句柄参数对应的窗口例程里,以windows消息的形式接受网络事件通知。WSAAsyncSelect(socket1,hwnd, WM_SOCKET,FD_READ );  // WM_SOCKET指定在发生网络事件的时候,打算接受的消息。在应用程序中通过消息宏将Onclinetmes与程序的其它部分关联起来产生关系
    ON_MESSAGE(WM_SOCKET, Onclinetmes)
      

  2.   

    看<<windows网络编程技术>>
      

  3.   

    应用程序会在与hwnd窗口句柄参数对应的窗口例程里,以windows消息的形式接受网络事件通知。WSAAsyncSelect(socket1,hwnd, WM_SOCKET,FD_READ );  // WM_SOCKET指定在发生网络事件的时候,打算接受的消息。在应用程序中通过消息宏将Onclinetmes与程序的其它部分关联起来产生关系
    ON_MESSAGE(WM_SOCKET, Onclinetmes)
    ------------------------------------------------------------
    THIS IS RIGHT
      

  4.   

    ON_MESSAGE(WM_SOCKET, Onclinetmes)