代码在底部。
第 207 行的 send() 命令本身可以正常工作。但是,当我在第 218 行添加 send() 命令时,第一个命令失败 - 给出错误“地址错误”。我已经确认第二个 send() 命令实际上并未执行。
我完全迷失在这里......
最佳答案
看起来您通过使用 BUFFER_SIZE
作为发送量来创建未定义的行为,因为这不太可能是两个字符串的长度。添加第二个 send()
调用可能会更改字符串的内存布局,从而导致出现错误。
应该是:
send(newsock_fd, "No such command in history", sizeof "No such command in history", 0);
如果您不想发送尾随空字节,请从 sizeof
中减去 1。
关于c - 为什么添加 send() 调用会使之前的 send() 调用失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53346543/