1

来自用户的输入插入到“缓冲区”。

代码

while(1)
 {
     puts("\n#listening");

     puts("#Enter your message:");
     fgets(buffer,255,stdin);
     int n = write(s,buffer,strlen(buffer));// char buffer[512];
     printf("\n>> Writing to server: %d bytes",n);

     int r = read(s,buffer,strlen(buffer));
     if(r > 0)
     {
             printf("\n>> Reading from server: %d :%s",r,buffer);
     }
 }

输出

#listening
#Enter your message:
Hello World!

>> Writing to server: 13 bytes
>> Reading from server: 12 :ello World!

如您所见,未打印第一个“H”。

4

2 回答 2

1

此代码存在问题,但它们都不会丢弃接收到的消息中的第一个字符。

负责丢失字符的是套接字远端的“服务器”程序。

于 2013-10-03T15:36:04.607 回答
-1
  1. 尝试将“\n”放在语句的末尾printf()这样更简洁,有助于调试。
  2. 您也在发送换行符,这就是为什么 ; 有 13 个字节的原因write()。这可能会扰乱您在控制台上打印的方式。

总而言之,我认为你得到了“H”,但你没有正确打印它。

于 2013-10-03T15:46:31.623 回答