C#中如何通过Socket或TCP发送数据包?

问题描述

如上两张图所示,一个是对方要求客户端发数据包的要求,涉及到长度、平台码、业务码以及数据体,因为格式显示需要short类型,但是平台业务码又是六位的数字,在此处一转换就报错,另外,数据体是一串json格式的字符串,通过转换之后,写入到这个固定长度的数据包中时,则直接报溢出错误,该如何弄?又或者普遍发数据包的形式应该是什么样的?

解决方案

解决方案二:
自己顶顶顶顶
解决方案三:
我没看出平台ID为何是6位数字
解决方案四:
人傻没办法,你代码截个卵图,想改都没得改1.你定义一个byte[]sendmsg长度为12干鸟,人家上面协议说了数据是不定长的2.还有你要确认short转成byte后是小字节序,还是大字节序.3.人家协议都说了short平台ID为short你知道short最大值是多少么你写个121212干毛。
解决方案五:
用WCF吧
解决方案六:
引用3楼wyd1520的回复:

人傻没办法,你代码截个卵图,想改都没得改1.你定义一个byte[]sendmsg长度为12干鸟,人家上面协议说了数据是不定长的2.还有你要确认short转成byte后是小字节序,还是大字节序.3.人家协议都说了short平台ID为short你知道short最大值是多少么你写个121212干毛。

我估计撸主代码用图片贴出来,是防止被直接剽窃

时间: 2024-10-11 17:39:04

C#中如何通过Socket或TCP发送数据包?的相关文章

编程-Java与C#用socket通讯 只求发送数据部分和数据接收部分(发送简单的文本信息)

问题描述 Java与C#用socket通讯 只求发送数据部分和数据接收部分(发送简单的文本信息) 只求发送数据部分和数据接收部分 TCP连接不要 客户端和服务器响应次数也不要 只求发送数据部分和数据接收部分(java发送c#接收) 解决方案 server: Java code public void handleConnection(Socket connection) { System.out.println("客户:" + connection.getInetAddress() +

javasocket-java 中TCP自定义数据包

问题描述 java 中TCP自定义数据包 比如我现在要定义包头,包头给了三个参数,用户名,密码,长度,时间,分别是4,12,2,4个字节,时间就是 从(00:00:00), January 1, 1970到现在消逝了多少秒(可由time函数获取),这个包头怎么定义 解决方案 将包头定义为一个字节数组即可,该字节数组的长度为4+12+2+4,传输的时候候将用户名.密码.长度.时间等转换成为对应的字节,放入定义的字节数组中,解析包的时候则将对应长度的字节流转换成相应的类型,比如字符串,时间,数字等等

一个多线程,SOCKET连接与发送数据的例子。

问题描述 http://download.csdn.net/source/435508一个多线程,SOCKET连接与发送数据的例子. 解决方案 解决方案二:这个简单啊,网上搜一下就得到答案了.

串口通信-Java通过得到的Socket流向串口发送数据

问题描述 Java通过得到的Socket流向串口发送数据 我是一个菜鸟,最近学习Java ,写了个向串口发送数据的代码,有点问题,希望各位大神给指点指点 package server; import gnu.io.CommPortIdentifier; import gnu.io.PortInUseException; import gnu.io.SerialPort; import gnu.io.SerialPortEvent; import gnu.io.SerialPortEventLis

Linux内核bug引起Mesos、Kubernetes、Docker的TCP/IP数据包失效

本文讲的是Linux内核bug引起Mesos.Kubernetes.Docker的TCP/IP数据包失效,[编者的话]最近发现Linux内核bug,会造成使用veth设备进行路由的容器(例如Docker on IPv6.Kubernetes.Google Container Engine和Mesos)不检查TCP校验码(checksum),这会造成应用在某些场合下,例如坏的网络设备,接收错误数据.这个bug可以在三年前任何一个测试过的内核版本中发现.补丁已经被整合进核心代码,正在回迁入3.14之

代码-linux的xterm开启的终端里使用原始套接字发送数据包出错,求助

问题描述 linux的xterm开启的终端里使用原始套接字发送数据包出错,求助 xterm下原始套接字可以接收数据包,但是发送数据包时出错,怎么解决? 错误是[error 101]network is unreachable. 代码如下: proto = socket.getprotobyname('tcp') # only tcp sock = socket.socket( socket.AF_INET, socket.SOCK_RAW, proto ) packet_base = sock.

多队列网卡简介以及Linux通过网卡发送数据包源码解读

首先我们看一下一个主流多队列网卡(E1000)跟多核CPU之间的关系图: 非多队列: linux的网卡由结构体net_device表示,一个该结构体对应一个可以调度的数据包发送队列. 数据包的实体在内核中以结构体sk_buff(skb),形如: 多队列: 一个网卡可以拥有多个队列 接下来,看看TX引擎是如何工作的(注:对于发送和接收数据包有两个名词,分别应对TX,RX) 解释: 函数-dev_queue_xmit():入队一个buffer以传输到网络驱动设备. 配合该函数的源码来解释上图的传输过

centos一开机就像别的IP发送数据包,是不是变肉鸡了

问题描述 centos一开机就像别的IP发送数据包,是不是变肉鸡了 centos一开机就像别的IP发送数据包,是不是变肉鸡了,而且发送的IP一直在变,很多境外IP,详情看图 解决方案 先定位发送数据包的程序,然后再看是否为可疑程序

网络编程 winpcap编程-winpcap发送数据包的问题

问题描述 winpcap发送数据包的问题 我用winpcap编写发包程序,用的是发送队列发的,但文件大小大于150M,就发送不了,抓包工具也抓不到包,这是什么原因,咋解决,急需求解 解决方案 WINPCAP发送自己构造的数据包问题winpcap使用:发送数据包 解决方案二: 先看你的程序返回是什么,是不是哪里阻塞了,或者API返回错误了