BCB利用Socket通信进行数据采集时缓冲区怎么设置

BCB利用Socket通信进行数据采集时缓冲区怎么设置,第1张

socket通信中,数据是以流的方式传递,可能情况:数据包超过1个MTU,那数据包会被系统分包发送,当用Receive方法是从你定义的SOCKET接收缓冲区中读取数据的,可能第一次读只收到第一个分包。你强制等待3S,SOCKET的接收缓冲区已经接收到所有的包了。建议:将你的数据包加入自定义格式格式发送,比如数据头加入:0XFE,数据尾加入0XFD,这样用RECEIVE来一直接收,当判断收到完整数据时,再进行处理。

接收到的数据是byte[]数组格式的,需要进行一步简单的转换。如果你第一步接收已经做完了,那么可能这步转换就省了

byte[] byts=new byte[1024*1024*2];//定义接收数组,大小为2m根据需要,一般设置为1就够了,因为简单接收,不会有太大数据量的。

int length=socket.Receive(byts, 0, byts.Length, SocketFlags.None);//开始接收数据,并将接收到数据放到byts数组中。它的返回值为一个整型,是指接收数据的数量

if(length>0)

{

string msg = System.Text.Encoding.UTF8.GetString(byts, 0, r)

}

OK,到这步,你应该就会了吧,此时拿到的msg就是接收到回来的字符串了。然后启动数据库连接,将msg写入对应的表就可以了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10028057.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存