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对象啊,还有就是服务器端是否绑定了?