您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> VC/MFC >> 客户端与服务器经常出现无法通信的怪现象

客户端与服务器经常出现无法通信的怪现象

来源:网络整理     时间:2016/8/5 3:38:58     关键词:

关于网友提出的“ 客户端与服务器经常出现无法通信的怪现象”问题疑问,本网通过在网上对“ 客户端与服务器经常出现无法通信的怪现象”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 客户端与服务器经常出现无法通信的怪现象
描述:

我的服务器端和客户端使用的是CSocket派生类,我现在正在本地计算机进行测试,就是本地开一个线程,连接本地的服务器,多数情况是正常的,但是偶尔会出现OnReceive无法接收数据的情况,并且一旦无法接收了,就始终无法接收了,比如服务器发送的数据客户端OnReceive永远无法相应,但是客户端发送的数据服务器OnReceive能收到。
由于代码太多无法贴出来,发送的Send我是循环发送的办法。
BOOL CNetSocket::SendEx(void * pSendBuf,int   nCount)
{
int nBytesSent;
nBytesSent = 0L;
while (nBytesSent < nCount)
{
int dwBytes;
if ((dwBytes = Send((BYTE*)pSendBuf + nBytesSent,nCount - nBytesSent)) 
== SOCKET_ERROR)
{
if (GetLastError() == WSAEWOULDBLOCK)
{
Sleep(100);
continue;
}
else
{
break;
}
}
else
nBytesSent += dwBytes;
}
if (nBytesSent == nCount)
return TRUE;
   
return FALSE;
}
这几天一直搞不定,快疯了。


解决方案1:

用什么协议的tcp?udp?是不是包丢了啊?

解决方案2:

看来问题可能在 ReceiveEx中.

解决方案3:

引用楼主 micr0soft 的帖子:
并且一旦无法接收了,就始终无法接收了

是从一开始就无法接收?
还是起初可以,过段时间后无法接收? 解决方案4:

把每一步的GetLastError()打印出来。日志也打印出来。

解决方案5:

你写的代码,出现这个问题,很正常。
if ((dwBytes = Send((BYTE*)pSendBuf + nBytesSent,nCount - nBytesSent)) 
== SOCKET_ERROR) 

if (GetLastError() == WSAEWOULDBLOCK) 

Sleep(100); 
continue
这是什么东西?
你当阻塞的socket?

解决方案6:

这个不是解决了吗?
http://topic.csdn.net/u/20080701/10/d8fef584-8e3b-40f1-926f-e9497727105d.html

解决方案7:

有多线程?
没同步?

解决方案8:

那就是多线程死锁了

解决方案9:

OnReceive中怎么写的?

解决方案10:

up


以上介绍了“ 客户端与服务器经常出现无法通信的怪现象”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3116134.html

相关图片

相关文章