socket udp里的recvfrom开启了,但是接收消息时没有响应

时间:2021-05-28 20:44:10
我的socket采用udp协议,recvfrom线程在初始化套接字的时候就开启了,但是当另一端向我这端发送消息时,对方sendto函数返回成功,我这里的recvfrom却没有响应,buf里没有数据,请各位高手指点是怎么回事,谢谢!

AfxBeginThread(ChatReceive,(LPVOID)p);//开启接收线程


UINT ChatReceive(LPVOID param)
{
CHAT* pChat=(CHAT*)param;  //CHAT 标识为一个socket
// 客户端地址簇。
SOCKADDR_IN addrDest;
int len=sizeof(SOCKADDR),err;
char cchat[1024];
while( true )
{
CString schatOld;
memset(cchat,0,1024);
schatOld.Empty( );
//接收数据。

err=recvfrom(pChat->sock,cchat,1024,0,(SOCKADDR*)&addrDest,&len); 
if(SOCKET_ERROR==err)
{
AfxMessageBox(_T("接收聊天消息出错!" + GetError(GetLastError())));
continue;
}
//更新聊天内容。
CWnd* pMain=AfxGetApp()->m_pMainWnd;
pMain->GetDlgItemText(IDC_EDIT_RECEIVE,schatOld);
schatOld+="\r\n";
schatOld+=cchat;
pMain->SetDlgItemText(IDC_EDIT_RECEIVE,schatOld);
pMain->GetDlgItem(IDC_EDIT_RECEIVE)->SendMessage(WM_VSCROLL,SB_BOTTOM);

Sleep(60);
}
return 0;
}

8 个解决方案

#1


开启接收线程前,socket创建完成没

#2


recvfrom前要bind端口呢

#3


回复fishion:建立好了

#4


回二楼:也绑定了

#5


pChat->sock,cchat,1024,0,(SOCKADDR*)&addrDest,&len查看下这几个值是否正确

#6


CHAT* pChat=(CHAT*)param; //CHAT 标识为一个socket
暂时还看不明白这一句,,,

#7


你的网络环境是什么情况啊?发送消息的两个端口处于什么网络中……

#8


有没有创建socket对象啊,还有就是服务器端是否绑定了?

#1


开启接收线程前,socket创建完成没

#2


recvfrom前要bind端口呢

#3


回复fishion:建立好了

#4


回二楼:也绑定了

#5


pChat->sock,cchat,1024,0,(SOCKADDR*)&addrDest,&len查看下这几个值是否正确

#6


CHAT* pChat=(CHAT*)param; //CHAT 标识为一个socket
暂时还看不明白这一句,,,

#7


你的网络环境是什么情况啊?发送消息的两个端口处于什么网络中……

#8


有没有创建socket对象啊,还有就是服务器端是否绑定了?