gpt4 book ai didi

c - 在 C 的简单聊天中使用 read() 读取的神秘字符数?

转载 作者:太空宇宙 更新时间:2023-11-04 08:25:26 24 4
gpt4 key购买 nike

我用 C 语言编写了一个简单的 TCP 聊天。服务器的工作是从客户端接收消息并以相反的顺序将它们发回。结果应如下所示:

客户:“你好”

服务器:“olleH”

当我对“olleH”应用“strlen()”时,返回的长度不是5,而是7。7也是read()函数返回的值。我在这里错过了什么?我知道 char 数组以“\0”结尾,但这并不能解释额外的 2 个字符。

循环应该在收到消息“FINISH”时结束。因此,我使用 strcmp() 将收到的消息与字符数组“FINISH”进行比较。由于上述原因,它们从未被认为是相同的。我收到一条包含 2 个额外字符的消息。我试过将传入的消息与“FINISH__”(将“_”解释为空格)进行比较,但它也不起作用。

do{

bzero(buffer, 1000);
n = read(client_socket, buffer, 1000);
if (n<0){
error("ERROR reading socket");
}

invert(buffer, inv); //inv is a buffer that stores the inverted array

n = write(client_socket, inv, n);

if (n<0){
error("ERROR writing in socket");
}

}while (strcmp(buffer, "FINISH\n") != 0);

感谢您的帮助。

最佳答案

从服务器发送数据时,您必须输入 Hello 然后按 ENTER 键,这只是 \r\n。所以客户端将其读取为 Hello\r\n。因此,您必须额外获得两个字符。我希望这个对你有用。您可以通过遍历输入 buffer 来检查这一点,并检查那里是否存在 \r\n

关于c - 在 C 的简单聊天中使用 read() 读取的神秘字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30736840/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com