在linux中C语言socket怎么将接收到的波形数据(十六进制的数据)存入到本地磁盘中,并按文件分级存放。 5

在linux环境下,搭建一个socket通信协议,服务器将客户端发送的十六进制消息存入到本地磁盘中,并且,能够按文件名来进行索引。求大佬解惑,感谢!... 在linux环境下,搭建一个socket通信协议,服务器将客户端发送的十六进制消息存入到本地磁盘中,并且,能够按文件名来进行索引。求大佬解惑,感谢! 展开
 我来答
yanglinjava
2019-05-28 · TA获得超过3878个赞
知道大有可为答主
回答量:5971
采纳率:85%
帮助的人:268万
展开全部


估计你是用的tcp socket,导致“videlord”网友说的情况:对于tcp socket,send与recv不是对等的,recv时只要缓冲有数据就会收上来。简单说就是你send 4次,比如分别为10 10 10 10字节,对端可以一次recv到这40字节数据,也可以recv 40次、每次1字节。


解决办法有两种:

  1. 改用udp socket,send/recv自然对等了

  2. 继续用tcp socket,自己进行数据分段:比如自行约定在数据前约定4个字节用于描述数据长度,这样发送时,send 4+33字节,send 4+35字节;接收时,先获取描述长度的4字节获得长度,再按照长度接收数据(可能需要多次recv凑齐指定长度)。




推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式