socket通信,服务器能收到客户端发来的信息,但客户端收不到服务器发来的信息,该如何处理

socket通信,服务器能收到客户端发来的信息,但客户端收不到服务器发来的信息
服务器端:CAsyncSocket类
客户端:CSocket类
现在的情况是,服务器与客户端建立连接后,服务器能收到客户端发来的信息,但客户端收不到服务器发回的信息。
以下是客户端的创建套接字及连接服务器的过程:
tablesock.Create(0,SOCK_STREAM);
if(tablesock.Connect("127.0.0.1",6802)==0)
{
AfxMessageBox("连接服务器失败!");
OnCancel();
}
else

AfxMessageBox("连接服务器成功!");
}
以下是简化的客户端的接收函数:(服务器的接收函数与之类似,能接收成功)
void CTableSocket::OnReceive(int nErrorCode) 
{
int iBytesRead;
iBytesRead=Receive(Rdata_buf,sizeof(Rdata_buf)-1);
Rdata_buf[iBytesRead] ='\0';
CString str2=Rdata_buf;
if(str2.Right(8)!="服务终端")
{
AfxMessageBox("收到非法数据!");
return;
}
else

{
AfxMessageBox("收到数据!");
}



CSocket::OnReceive(nErrorCode);
}


结果是显示连接成功的,服务器端也发送成功,可客户端就是收不到,在OnReceive设了断点,结果没走到这一步,那我想就是之前有错误了,可是连接的都好好的啊,请大家帮帮忙,我已经卡在这好久了。。
------解决思路----------------------
看不出什么问题。你可以注意看看会不会是在服务端发送之前连接就断开了。
另外用Wireshark可以看到服务和客户端所有的通信包,通过它来判断问题可能更容易。
------解决思路----------------------
先确定你服务器端发送成功没
------解决思路----------------------
防火墙都关了试试
------解决思路----------------------
端口号确定对?
------解决思路----------------------
看看socket是否弄成局部变量了,(要弄成全局变量或成员变量)服务器发送成功,它只是把数据发送到服务器的发送缓冲区,缓冲区再发给客户端。并不意味着客户端一定会接收到,如果你这中间断了连接,但是服务器还是发到缓冲区了,返回发送成功了。就会造成客户端还是没收到