我写了个socket服务器的控件 这个服务器控件在同一端口 需要同时连接1000个以上的客户端  客户端有消息来时 采用的是事件通知模式  WSAAsyncSelect(sAccept,m_hWnd,WM_MYWINSOCK,FD_READ|FD_CLOSE);  如果每个客户端都有消息发过来 会不会发生消息丢失的情况呢 ?消息太多了,来不及接收  会不会有这样的情况发生呢?????

解决方案 »

  1.   

    楼上的情况就是TCP中常出现的粘包
    这种情况需要自己进行拆包,通常是在每个包的头部加上包的大小和类型,接收时根据这两个数据来进行划分
      

  2.   

    既然是VC编程.对大量用户连接的服务端,建议用完成端口模型. 
    TCP是流协议,必需注意解决粘包问题.本人用VC开发完成纯P2P双路语音视频聊天室--
    客户端:基于IE的OCX控制实现.
    服务端:完成端口模型(用于登陆管理和转发文本信息,语音视频数据不经过服务器) 人数不限,聊天室数不限。 
    视频:H264压缩解压缩。 
    音频:G729A压缩解压缩,平滑防抖动。 请热心的大家帮我测试,以让我观察在各种各样的网络环境下,该系统的运行情况。 万分感谢。 参与者,将可以和我探讨网络编程技术。 客户端下载地址:http://www.datibar.com/TEST.exe 
    简陋网站主页:http://www.datibar.com/