将数据写入以2帧发送的套接字

Abr*_*ile 2 c sockets linux tcp

我的appliactions使用socket小消息通过电线发送.每条消息大约200字节的数据.我希望看到我的数据以2帧而不是1帧发送.我的问题是

  1. 怎么做,即有没有办法导致TCP自动拆分2帧的缓冲区?
  2. 如果我通过2次单独的写入发送缓冲区,我会得到相同的吗?

我正在使用Linux和C.

mas*_*oud 5

怎么做,即有没有办法导致TCP自动拆分2帧的缓冲区?

TCP是一种流通信协议,所有数据都是连续的.您应该按分隔符拆分数据.

例如,在HTTP协议中,每个分离的请求被拆分为两个\n.

如果我通过2次单独的写入发送缓冲区,我会得到相同的吗?

不,您将收到它们作为一个连续的数据流.框架毫无意义.

注意:在应用程序中收到任何数据TCP之前,数据包是分开的,但操作系统会收集并重新组合它们.此过程对您的应用程序是透明的.