求助UDP怎么判断对方是否有数据发送过来?
小弟刚开始学WINSOCK,想尝试编写一个最简单的UDP点对点的聊天工具。使用MFC的基本对话框。
因为想随时接受显示对方发来的话。
所以我在::OnInitDialog()中完成接受SOCKET的设置和绑定,然后设置一个1秒记数器。
然后在::OnTimer()中加入
if ((Ret = recvfrom(ReceivingSocket, recbuff, 256, 0,
(SOCKADDR *)&SenderAddr, &SenderAddrSize)) == SOCKET_ERROR)
{
AfxMessageBox("ERROR: recvfrom failed with error");
closesocket(ReceivingSocket);
WSACleanup();
return;
}
CClientDC dc(this);
SetBkColor(dc.m_hDC,RGB(220,220,220));
TextOut(dc.m_hDC,140,330,recbuff,256);
这样一运行就程序停止响应,感觉如果能得到判断对方是否有数据发送过来的BOOL量来控制上面程序的执行就不会出现停止响应的程序。也就是说想只有当对方有数据发送过来时候上面的语句才执行。
不知道我这种想法是不是可行。如果可行请告诉我怎么判断。如果不行请告诉我应该怎么解决。
我说的有点乱,对不起了。请大家帮帮忙!