UINT _UDPThread(LPVOID lparam) // UDP 接收信息线程开始
{
CNetDebugDlg *pDlg=(CNetDebugDlg *)lparam;
if(pDlg->m_ServerStatus==SERVER_STOP)
return -1; CSocket sockSrvrUdp;
HWND hWnd = pDlg->m_hWnd;
pDlg->m_Potr = ::GetDlgItemInt(hWnd,IDC_LOCAL_PORT,NULL,TRUE); // 连接后不能再更改端口号设置
sockSrvrUdp.Create(pDlg->m_Potr,SOCK_DGRAM);
char buff[100]={0};
int ret=0;
CString ipStr;
CString msg;
UINT port;
for(;;)
{
// UDP 收发数据用sendto/recvfrom函数
ret=sockSrvrUdp.ReceiveFrom(buff,100,ipStr,port); // 阻塞等待接收
LPCSTR  str = buff; 
if (strlen(str)==0)
{
MessageBox(hWnd,"NULL",NULL,IDOK);
}
else TRACE( "%s",str ); //MessageBox(hWnd,"MessageBox",NULL,IDOK); if(buff[0]=='D') // D 表关闭
return 0;
if(ret==SOCKET_ERROR) 
{
DWORD error=GetLastError();
break;
}
//msg.Format(buff);
//pDlg->AddMsgList(ipStr,msg);
}
sockSrvrUdp.Close();
return 0;
}我使用上述代码创建一个UDP接收线程,发现使用网络调试工具进行调试的时候,如果把那个调试工具设置成 UDP服务器模式时,调试器发送数据能被这个线程抓取,而把那个调试工具设置成 UDP客户端模式时,调试器发送数据不能被这个线程抓取,获取的数据长度一直为 0 ,这是为什么呢 ?UDP客户端模式和服务器模式有什么区别呢 ?
我使用的 网络调试工具 为 Socket 调试助手 V2.2