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

标签 c sockets tcp server send

代码在底部。

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

我完全迷失在这里......

The confusing code in question

最佳答案

看起来您通过使用 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/

相关文章:

java - 当我使用套接字时垃圾收集器循环

winapi - 具有重叠 I/O 的 TCP 连接

ruby - 如何在 Ruby 中建立启用 SSL 的 TCP/IP 连接

java - JNI -- native 方法上的 UnsatisfiedLinkError

将 C 源代码转换为 ARM 汇编语言

mysql - 使用 C API 的 MySQL 准备语句中的语法错误

c - 了解 set/getsockopt SO_SNDBUF 大小加倍

c - C 中的函数,代码块错误 : expected '=' , ',' 、 ';' 、

java - 在多线程环境中限制连接组的速率

tcp 消息结束最佳实践