服务器端的编程问题

IONPhantom 2003-11-26 02:12:32
我设计了一个Server端的程序,目的是可以接受N台机器发送来的消息(消息可看作字符),我使用的重叠端口模型 Overlapped 结构,我把 WSARecv 放在一个线程中来获得消息。
得到消息的机制是如果5ms内当前用户的 socket 没有东西收到(WSA_WAIT_TIMEOUT),则换下一个用户的 socket 进行接收。结构如下:

{
DWORD Result=WSAWaitForMultipleEvents(0x01,&OverLapped.hEvent,false,2,FALSE);

if(Result==WSA_WAIT_TIMEOUT)
{
GetNextUserSocket();
WSARecv(NextUserSocket,&RecievedData,1,&BufSize,&flag,&OverLapped,NULL);
}
}

现在问题是这样的,程序运行以后,在第一个用户连入Server大概2-3秒种以后,WSARecv 就开始报错,错误返回码是10055(WSAENOBUFS),而且奇怪的是,用户发过来的消息有时候能收到有时候收不到,而且收到的几率没有任何规律。
请问各位这个问题应当怎样解决?
...全文
26 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
bb123456789 2003-11-27
  • 打赏
  • 举报
回复
关注!

4,358

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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