一个关于网络传输出现的问题,各位高手帮我下

jonshone 2006-08-06 07:09:29
情况是这样的:
服务端向客户端发送数据,开始的时候可以接受到,后来就接受不到服务端的数据,客户端出现的出错是连接被断开、连接超时等,服务器出现发送数据阻塞,为什么会出现这种错误,如果知道话的告诉我解决的办法。(客户端网速:512kb/s)。
...全文
235 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jonshone 2006-08-07
  • 打赏
  • 举报
回复
有知道的么,说清楚点好不
MSDOTNET1 2006-08-07
  • 打赏
  • 举报
回复
服务端
jonshone 2006-08-07
  • 打赏
  • 举报
回复
这是服务端程序
WSADATA Data;
int status=WSAStartup(MAKEWORD(2, 2), &Data);
if (status != 0)
{
return 1;
}
DWORD ul =0;
ioctlsocket( (SOCKET)pSocket,FIONBIO, &ul);
DWORD dwBufSize = sizeof(download_data) * 2;
DWORD dwRcvSize = 541 ;
setsockopt( (SOCKET)pSocket, SOL_SOCKET, SO_SNDBUF,(const char*)&dwBufSize, sizeof(DWORD));
setsockopt( (SOCKET)pSocket, SOL_SOCKET, SO_RCVBUF,(const char*)&dwRcvSize, sizeof(DWORD));

while( true )
{
char szBuf[ sizeof(ClientPackage) ];
memset(szBuf, '\0' , sizeof(ClientPackage) );
int nRecvNum = recv( (SOCKET)pSocket, (char *)szBuf, sizeof(ClientPackage) ,0 ) ;
if( nRecvNum == SOCKET_ERROR ){
closesocket((SOCKET) pSocket);
return -1;
}
if( nRecvNum == 0 ){
closesocket((SOCKET) pSocket);
return -1 ;
}
while( nRecvNum < sizeof(ClientPackage) )
{
char * pszTempBuf = new char [ sizeof(ClientPackage) - nRecvNum ];
int nCount = recv((SOCKET) pSocket, (char *)pszTempBuf, sizeof(ClientPackage) - nRecvNum,0 ) ;
if( nCount == SOCKET_ERROR )
{
delete pszTempBuf;
pszTempBuf = NULL;
closesocket((SOCKET) pSocket);
return 1;
}
memcpy( szBuf + nRecvNum, pszTempBuf, nCount );
nRecvNum += nCount ;
delete pszTempBuf;
pszTempBuf = NULL;
}
}


此问题是针对没有打xp sp2的机器出现的,如xp sp1等,并且是在传输一段时间后出现的
jonshone 2006-08-07
  • 打赏
  • 举报
回复
哦,发错了,不过算了自己弄吧
snowbirdfly 2006-08-06
  • 打赏
  • 举报
回复
恩~
最好把代码贴出来看看,才好解决问题~~~
DentistryDoctor 2006-08-06
  • 打赏
  • 举报
回复
可能的原因太多了。看了代码才好解决问题。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧