为什么添加send()调用会使先前的send()调用失败?

时间:2018-11-16 23:08:13

标签: c sockets tcp server send

代码在底部。

第207行的send()命令本身可以正常工作。但是,当我在第218行添加send()命令时,第一个命令失败-给出错误“ Bad address”。我已经确认第二个send()命令实际上并未执行。

我在这里完全迷路了...

The confusing code in question

1 个答案:

答案 0 :(得分:1)

您似乎使用BUFFER_SIZE作为发送数量来创建未定义的行为,因为这不太可能是两个字符串的长度。添加第二个send()调用可能会更改字符串的内存布局,这会导致您得到错误。

应该是:

send(newsock_fd, "No such command in history", sizeof "No such command in history", 0);

如果您不想发送结尾的空字节,请从sizeof中减去1。