gpt4 book ai didi

C++ 套接字写入太多字符

转载 作者:行者123 更新时间:2023-11-28 07:51:44 25 4
gpt4 key购买 nike

此代码使用套接字嵌入到“聊天室”程序中。它正在从客户端 (myFD) 读取并成功地将用户名附加到前面。
但是,我在写入缓冲区中写入额外字符时遇到问题。上次发送的内容仍然存储并发送。

例如,我第一次发送(并正确写入)

UN: Hello.

但是在第二次尝试时,当我写下“NOT”时,发送的消息将是:

UN: NOTlo

cout 语句在末尾没有“lo”的情况下正确地“cout's”,但客户端在末尾收到“lo”。我是否忽略了一些简单的事情?

代码如下:

while ( (amount_read = read(myFD, buffer, 1024)) > 0)
{
total = 0;
strcpy(second, "");
strcpy(second, username);
total += unLength;
strcat(second, ": ");
total += 2;
strcat(second, buffer);//, amount_read);
total += amount_read;
cout << second << endl;
write(myFD, second, total);
}

谢谢!

最佳答案

您的字符串不是空终止的,这就是您打印旧字符串的原因。您可以修复它,在字符串 buffer[amount_read]=0 的末尾添加 \0 或在下一次迭代之前清除整个字符串。

要清除缓冲区,您可以使用 memset (buffer,'\0', 1024) .也许这不是最快的方法,但可以防止存储不应托管超过必要时间的垃圾或数据。

关于C++ 套接字写入太多字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13637241/

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