select数据收不完的有关问题

select数据收不完的问题
使用100个并发线程连接服务器,每个线程一个套接字连接,每个套接字发送三次数据,共发送300条信息。服务器端使用select模型,但是只能接收250多条的信息。accept函数接收客户端的连接,也使用select模型,这里能检测出连接的数量是100.但是接收数据的数量始终没有300!!
怎么解决啊!?

------解决方案--------------------
应该是程序有bug,收的时候没收干净。可以检查receive的返回值。是否收干净。
------解决方案--------------------
tcp的话有可能粘包,不一定接收一定是300个
------解决方案--------------------
引用:
引用:tcp的话有可能粘包,不一定接收一定是300个
C/C++ code?123456789101112131415161718192021222324static int index=0;for(u_int i=0;i<AllSocketFd.fd_count;i++){  if(FD_ISSET(AllSocketFd.fd_ar……

粘包的意思是你发送了几个包,但是接收只有一个,把几个包连一起了,如果你那边发送是定长数据,接收的时候打印出接收长度看看就知道了
------解决方案--------------------
引用:
引用:
引用:引用:tcp的话有可能粘包,不一定接收一定是300个
C/C++ code?123456789101112131415161718192021222324static int index=0;for(u_int i=0;i<AllSocketFd.fd_count;i++){……
没法禁止的。你的程序存在不存在问题要看你的需求是什么了。 粘包、拆包、解析这些都没做,你的程序现在也做不了什么。。。
------解决方案--------------------
高手i   流波
------解决方案--------------------
引用:
引用:
引用:引用:
引用:引用:tcp的话有可能粘包,不一定接收一定是300个
C/C++ code?123456789101112131415161718192021222324static int inde……
不知道你说的问题是指什么。你的程序应该是能够收到全部数据的。只是粘包导致一个以上的send对应了一个recv。