C套接字写入添加额外字符

wil*_*ill 0 c sockets

我试图在聊天程序中附加""消息.在下面的例子中,buf是一个包含消息的字符数组.奇怪的是,当我使用write()向下发送它时,它会以2个突发发送它.第一个突发是正确的消息,然后第二个突发是2-3个随机的非字母ascii字符.有什么想法吗?当我向插座发送buf时,它可以正常工作.

char nickmsg[550];
strcpy(nickmsg, "<");
strcat(nickmsg, username);
strcat(nickmsg, "> ");
strcat(nickmsg, buf);
write(sd, nickmsg, sizeof(nickmsg));
Run Code Online (Sandbox Code Playgroud)

Jus*_*eff 5

你不想要sizeof(nickmsg),你想要strlen(nickmsg).使用sizeof(nickmsg),您将发送缓冲区中的所有内容,而不仅仅是您在其中构建的字符串.如果它只是您要发送的字符串中的字符,则需要计算其中的字符长度.(顺便说一下,创建字符串的方法比重复的strcats更有效)