byte-C#中socket通信需要将数据按包头和定长分割,如何做

问题描述

C#中socket通信需要将数据按包头和定长分割,如何做

包头是0x55,每个数据加上包头为11个byte,但是数据中也可能出现0x55,该如何分割

解决方案

一般的解决方法是两种:
1)定义转义符,对内容中的 0x55 进行转义。如将 0x55 转义成 0x54 01;则 0x54 是 0x54 00;用两个字节表示;
2)定义包头后带数据的长度,再加上包尾,最好再加上一个校验位。这样在接收到一包数据后,先按上述定义进行有效性验证。

解决方案二:

包头后面带上长度信息,按长度去截取啊。这样最稳当

解决方案三:

数据尾加校验位(2位,即总长13位),遇到0x55向后读取共13位,计算最后2位是否与校验码一致,一致就是完整的数据包,否则舍弃.

时间: 2025-01-02 10:14:17

byte-C#中socket通信需要将数据按包头和定长分割,如何做的相关文章

android 中socket通信

问题描述 android 中socket通信 private Button send; private TextView rec; private static Socket client; private boolean result=false; private int a=0; private PrintWriter write; private static BufferedReader read; public static int ac=0; private InputStream

android socket通信读取图片数据,数据出错

问题描述 android socket通信读取图片数据,数据出错 我从电脑服务端用imageIO发送了屏幕的截图给android,android端发现如果每次读取 的数据大小超过20K,所得的数据就会出错,我对比了下发送前的图片数据,基本上是 夹杂了很多1K以上的0数据块,又或者是数据块错位.但是一旦把每次读取的数据大小降 低至10K以下又或者增加两次读取间的间隔至500ms以上就能保持数据不出错,这是为什 么呢? 解决方案 Android中的Http通信(二)之根据Url读取网络数据 解决方案

Android中Socket通信的实现方法概述_java

本文实例简述了Android中Socket通信的实现方法,具体内容如下: 一.socket通信概述 通俗的来说套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口. 应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题.多个TCP连接或多个应用程序进程可能需要通过同一个TCP

大家谁有Fortran程序和其他程序语言socket通信,实现数据交换的例子?

问题描述 大家谁有Fortran程序和其他程序语言socket通信,实现数据交换的例子? 大家谁有Fortran程序和其他程序语言socket通信,实现数据交换的例子? 解决方案 用c去实现网络通讯,fortran去调用 http://blog.chinaunix.net/uid-21498513-id-143992.html 解决方案二: http://blog.chinaunix.net/uid-21498513-id-143992.html

java中socket通信问题,急急急

问题描述 java中socket通信问题,急急急 客户端和服务端用socket建立通信进行文件传输,客户端用outputstream将文件写入流中,在服务端用输入流读取.这时候客户端不想传了,断开连接并告知服务器.服务端如何获知客户端已经断开连接了. 解决方案 你客户端断开连接的时候进行了哪些操作?想想这些操作会对服务器端产生什么影响呗· 解决方案二: 服务端一直在循环监听是否有客户端连接,并不会知道某个客户端已经断开.建议客户端断开之前先执行某条协议,服务器收到这条协议便知道你要断开咯

PHP中Socket连接及读写数据超时问题分析_php技巧

本文实例讲述了PHP中Socket连接及读写数据超时问题.分享给大家供大家参考,具体如下: 虽然PHP中对fsockopen()方法有连接socket的超时参数,但是没有类似C中的连接成功后对数据的读写超时参数设置.没关系,PHP中对stream提供了一系列的方法以防止超时 stream_set_blocking( $fp , false ) 设置数据流为阻塞模式,以防止数据没读完就退出 如果模式为 false, 给定的 socket 描述符将切换到非块模式, 如果为 true, 则切换到块模式

Socket 通信 接收的数据包被分为多个

问题描述 客户端向服务端通过GPRS发送数据的时候,客户端发送的是一个数据包,但是服务端接受的时候发现那个数据包被分成两个子数据包.但是相同的数据包客户端通过其他方式发给服务端时,服务端能够接受一个完整的数据包.请问一下这个是什么原因.谢谢! 解决方案 解决方案二:面向连接的tcp,本来就是如此的.如果你不理解为什么会分包.粘包,那你就使用更为简单的可靠的http(它是tcp上更为可靠的实现).解决方案三:你所谓的数据包,是应用程序的数据包,跟底层的数据包是两回事(有些人总把tcp底层协议的数据

Android Socket通信详解_Android

一.Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信.两者的最大差异在于,http连接使用的是"请求-响应方式",即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据.而Socket通信则是在双方建立起连接后就可以直接进行数据的传输,在连接时可实现信息的主动推送,而不需要每次由客户端想服务器发送请求. 那么,什么是socket?Socket又称套接字,在程序内部提供了与外界通信的端口,即端口通信.通过

Android蓝牙开发,与HC-06单片机通信,更新数据太慢

问题描述 Android蓝牙开发,与HC-06单片机通信,更新数据太慢 各位大侠好,目前做Android手机蓝牙与单片机HC-06蓝牙模块的通信问题,单片机给我不断的发送数据包,一个数据包是18位, 我只需要其中的第7,8位字节,来表示湿度,第10,11位字节,来表示温度,发送数据格式如下:FD 0E 00 00 00 00 00 01 75 00 B8 2E 16 A5 EF 04 68 77,其中0175表示湿度,B82E表示温度,代码片段如下: 求各位大神帮忙看一下,为什么我后台数据更新为