奇怪的问题?实在不明白为什么??
今天写了一个网络通信的程序,就一个客户端一个服务器端,很简单的程序实现相互发送消息,用select的io多路复用,但是遇到一个很奇怪的地方:之前我遇到的问题是:我服务器发送一个消息后,客户端并为显示接收到,只有当客户端发送消息时,才会把之前从服务器收到的消息显示出来,然后发送自己的消息给服务器。但是我将客户端程序代码如下部分: numbytes = recv(sockfd,buf,MAXBUF,0);
if(numbytes > 0)
{ printf("received :%s",buf); }
修改为:
numbytes = recv(sockfd,buf,MAXBUF,0);
if(numbytes > 0) { printf("received :%s\n",buf); }
即只是在printf函数中加了换行符,之前的问题就解决了,服务器发送的消息,客户端可以立即接收到,不用等到自己发送消息后才接收到。不过真是不明白这是为什么??请高人指点。。。。