我写了简单服务器和客户端的通讯的程序。可是怎么也不能进行通讯。这是服务器端 这是一个线程。不停的接收客户端的数据。可是它怎么也接收不到客户端发来的数据。// 初始化时需要的一些东西都初始成功了。
long WINAPI Liste(CSocketSvView *pView)
{
char msg[2000]; SOCKADDR_IN Sv;
int SvLen;
int nchar;
TRACE("Liste\n");
while(1)
{
SvLen=sizeof(Sv);
nchar=recvfrom(pView->m_socket,msg,1024,0,(PSOCKADDR)&Sv,&SvLen);
if(nchar<0)
{
//pView->InvalidateRect(NULL);
Sleep(200);
continue;
}
else
{
//TRACE("recvfrom Succeeded\n");
AfxMessageBox("recvfrom Succeeded.");
sendto(pView->m_socket,msg,1024,0,(PSOCKADDR)&Sv,SvLen);
break;
}
} return -1;
}客户端的程序://pView->m_socket 调试都已经成功了。long WINAPI Liste(CSocketClView *pView)
{
char msg[2000];
TRACE("Sending ATTACH command.\n");
wsprintf(msg,"A: "); // 发送A:
sendto(pView->m_socket,msg,1024,0,(PSOCKADDR)&pView->m_Cl,sizeof(pView->m_Cl));
return -1;
}
long WINAPI Liste(CSocketSvView *pView)
{
char msg[2000]; SOCKADDR_IN Sv;
int SvLen;
int nchar;
TRACE("Liste\n");
while(1)
{
SvLen=sizeof(Sv);
nchar=recvfrom(pView->m_socket,msg,1024,0,(PSOCKADDR)&Sv,&SvLen);
if(nchar<0)
{
//pView->InvalidateRect(NULL);
Sleep(200);
continue;
}
else
{
//TRACE("recvfrom Succeeded\n");
AfxMessageBox("recvfrom Succeeded.");
sendto(pView->m_socket,msg,1024,0,(PSOCKADDR)&Sv,SvLen);
break;
}
} return -1;
}客户端的程序://pView->m_socket 调试都已经成功了。long WINAPI Liste(CSocketClView *pView)
{
char msg[2000];
TRACE("Sending ATTACH command.\n");
wsprintf(msg,"A: "); // 发送A:
sendto(pView->m_socket,msg,1024,0,(PSOCKADDR)&pView->m_Cl,sizeof(pView->m_Cl));
return -1;
}
{
//TRACE("recvfrom Succeeded\n");
AfxMessageBox("recvfrom Succeeded.");
//sendto(pView->m_socket,msg,1024,0,(PSOCKADDR)&Sv,SvLen);
break;
}
里面的sendto(...)有什么用啊?!
接收成功了,再发给自己一次
去掉,再试试吧
2、recvfrom后在if(nchar<0)中用WSAGetLastError检查发生了什么错误。。