本帖最后由 oyljerry 于 2012-11-27 17:02:31 编辑

解决方案 »

  1.   

    不太懂网络,不过只要你不断开连接,想接收的时候,还是能读到的;一个连接对应一个服务器,然后可以用信号量samphone之类的控制全读完啊~或者弄个全局的变量,读到一个自增,大小到了,就结束了
      

  2.   

    如果连接量不是很大的话,给没一个连接开一个线程,在里面做connect,recv。
    主线程创建所有子线程之后,等待所有子线程返回。
      

  3.   

    1.可能会,看你缓存区怎么设置的SETSOCKEOPT 里面的SO_RCVBUF参数可以设置
    2.WaitForMultipleObjects来保证
    给楼主两个建议:
    1.如果是学习为主要目的,建议从头开始看,Socket网络通信编程,有了理论看那些API才有感触。
    包括以后面试都问这些基础。2.如果楼主是完成工作为目的,建议尝试网络通信模型,Select模型,epoll模型等等。
      

  4.   

    1.不会丢,socket有自己的缓冲,你不取则一直在接收缓冲区中,除非服务端上层发送时进行人为的丢弃
    2.最简单的用select模型,单线程负责N个socket通信,比你上面写的形式来的合理
      

  5.   

    SO_RCVBUF不是设置接收缓冲区大小的吗?设置够大就不丢失了吗?
    如果不丢失的话用select模型确实是个好主意。
    另外,非常感谢你的建议。这个问题基于工作。windows网络编程技术基本上浏览了一遍,对其中的几个模型也只是了解了,如果可以用select的话,这儿正好能实践下。
      

  6.   

    谢谢。既然不丢失,那我就试试select。
      

  7.   

    http://blog.csdn.net/piggyxp/article/details/6922277
      

  8.   

    先回答你的问题吧
    1.返回的消息是保存在socket缓存中的,数据会随socket一起销毁,如果一直不处理,等缓存满了,将接受不到消息。
    2.建议用select模型来管理socket,不用创建多线程,还能很好的管理套接字。