关于WSAAsyncSelect的一个简单有关问题!可是小弟我却不会
关于WSAAsyncSelect的一个简单问题!可是我却不会!
刚接触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与程序的其它部分产生关系,不知道我有没有说清楚!希望朋友们帮帮我,谢了!
------解决方案--------------------
应用程序会在与hwnd窗口句柄参数对应的窗口例程里,以windows消息的形式接受网络事件通知。
WSAAsyncSelect(socket1,hwnd, WM_SOCKET,FD_READ ); // WM_SOCKET指定在发生网络事件的时候,打算接受的消息。
在应用程序中通过消息宏将Onclinetmes与程序的其它部分关联起来产生关系
ON_MESSAGE(WM_SOCKET, Onclinetmes)
------解决方案--------------------
看 < <windows网络编程技术> >
------解决方案--------------------
应用程序会在与hwnd窗口句柄参数对应的窗口例程里,以windows消息的形式接受网络事件通知。
WSAAsyncSelect(socket1,hwnd, WM_SOCKET,FD_READ ); // WM_SOCKET指定在发生网络事件的时候,打算接受的消息。
在应用程序中通过消息宏将Onclinetmes与程序的其它部分关联起来产生关系
ON_MESSAGE(WM_SOCKET, Onclinetmes)
------------------------
THIS IS RIGHT
------解决方案--------------------
ON_MESSAGE(WM_SOCKET, Onclinetmes)
刚接触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与程序的其它部分产生关系,不知道我有没有说清楚!希望朋友们帮帮我,谢了!
------解决方案--------------------
应用程序会在与hwnd窗口句柄参数对应的窗口例程里,以windows消息的形式接受网络事件通知。
WSAAsyncSelect(socket1,hwnd, WM_SOCKET,FD_READ ); // WM_SOCKET指定在发生网络事件的时候,打算接受的消息。
在应用程序中通过消息宏将Onclinetmes与程序的其它部分关联起来产生关系
ON_MESSAGE(WM_SOCKET, Onclinetmes)
------解决方案--------------------
看 < <windows网络编程技术> >
------解决方案--------------------
应用程序会在与hwnd窗口句柄参数对应的窗口例程里,以windows消息的形式接受网络事件通知。
WSAAsyncSelect(socket1,hwnd, WM_SOCKET,FD_READ ); // WM_SOCKET指定在发生网络事件的时候,打算接受的消息。
在应用程序中通过消息宏将Onclinetmes与程序的其它部分关联起来产生关系
ON_MESSAGE(WM_SOCKET, Onclinetmes)
------------------------
THIS IS RIGHT
------解决方案--------------------
ON_MESSAGE(WM_SOCKET, Onclinetmes)