繁体   English   中英

从套接字读取字符串时,不打印第一个字符

[英]When reading string from a socket, the first character is not printed

用户输入将插入到“缓冲区”中。

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'未打印。

这段代码有问题,但是没有一个会删除接收到的消息中的第一个字符。

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

  1. 尝试将“ \\ n”放在printf()语句的末尾 ,它更干净,将帮助您进行调试。
  2. 您还发送了换行符,这就是为什么write()处有13个字节的原因; 这可能会干扰您在控制台上进行打印的方式。

总而言之,我认为您会获得“ H”字样,但打印不正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM