c - 如何原子地发送()缓冲区,以便它们不会被部分分派(dispatch)?

标签 c sockets tcp send bsd

目前我遇到的问题是,如果我发送缓冲区,它可能只发送部分并返回发送的字节数。有什么方法可以设置某些选项或某物。这会阻止 bsd 套接字部分发送?

最佳答案

通常,对于 TCP 等 SOCK_STREAM 套接字类型,无法执行此操作。 SOCK_DATAGRAM(对于IP,这意味着UDP)和SOCK_SEQPACKET(对于IP,没有这样的东西)会做你想要的,但有不同的限制。

无论如何,解决方案是您需要自己进行数据缓冲和成帧。也就是说,您需要在发送的流中包含带内信息,以允许接收者重建您想要的“数据包”边界。

关于c - 如何原子地发送()缓冲区,以便它们不会被部分分派(dispatch)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19071524/

相关文章:

android - 如何将Android ROM源码导入Android Studio?

c - Flex 和 Bison 如何找到命令的深度级别

c++ - DLL 中的非阻塞套接字(无窗口)

c - C 中套接字的频繁读/写操作

C# TCP 读取欢迎消息并发送命令

tcp - 使用 protobuf-net 反序列化 Protocol Buffer 时如何指定流长度?

c - 从监听(服务器)套接字获取对等名()

c - 在嵌入式 C 中使用 printf 进行多级调试

c - 503服务暂时不可用

c - 使用cygwin终端在c中打印数字的幂