来自用户的输入是插入'缓冲'。
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'未打印。
答案 0 :(得分:1)
此代码存在问题,但它们都不会丢弃收到的消息中的第一个字符。
它是套接字远端的“服务器”程序,负责丢失字符。
答案 1 :(得分:-1)
printf()
语句的 end 上,它更干净,可以帮助您进行调试。write()
有13个字节的原因;这可能会搞砸你在控制台上打印的方式。总而言之,我认为你得到了“H”,但是你没有正确打印出来。