多个端口服务器没有得到所有的传输

我在linux下编写了一个单线程服务器,这个服务器监听多个端口,服务器应该得到短信,我用这个代码来监听socket:

while(1){ FD_ZERO(&socks); for (i = 0 ; i < IndexConnctedSocket ; i++ ) FD_SET(newSocketFds[i],&socks); readsocks = select(highNewSocket + 1,&socks,(fd_set*) 0, (fd_set*) 0 ,&timeout); for (j = 0 ; j <= index ; j++ ){ if ( FD_ISSET(newSocketFds[j],&socks) != 0 ){ bzero(buffer, 2048); n = read(newSocketFds[j], buffer, 2048); if (n < 0) error("ERROR reading from socket"); i = 0; n = write(newSocketFds[j], "I got your message ",18); if (n < 0) error("ERROR writing to socket"); } } 

但是当我发送消息到服务器(通过连接到所有套接字的客户端)一些消息丢失,当我从不同的客户端连接到服务器,这完美的作品。

TCP没有消息,因此可以在一个read()中获得多个“消息”。 尝试检查你的read()调用的结果(n)。 你可以检查缓冲区

 printf("read(%d): %*.*s\n", n, n, n , buffer);