请教socket通信报文格式

xmh2015 2015-01-05 03:09:03
请教一下各位大师,我正在写一个socket通信的程序,能实现简单字符串的发送和接收,选择tcp/ip协议,想知道通信协议的格式怎么设定?谢谢各位!
...全文
4220 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuzexi2009 2015-01-19
  • 打赏
  • 举报
回复
自己定义一个规则,发送的时候按照规则封装,接收的时候再按照这个规则解封装。比如TLV。。 Type + Len + Value
  • 打赏
  • 举报
回复
自己约定就好了, head+content+food
xmh2015 2015-01-07
  • 打赏
  • 举报
回复
恩,各位大师,需要传送的就是字符串!
ghao0 2015-01-06
  • 打赏
  • 举报
回复
自定义,不建议用xml
willhuo 2015-01-06
  • 打赏
  • 举报
回复
TCP报文的格式: 0     1     2     3     4     5     6   0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0 2 4   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  0          1          2          3   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |       十六位源端口号  |      十六位目标端口号  |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |            三十二位序列号             |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |            三十二位确认号             |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  | 四位 |      |U|A|P|R|S|F|                |  | 首部 |六位保留位 |R|C|S|S|Y|I|     十六位窗口大小    |  | 长度 |      |G|K|H|T|N|N|                |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |      十六位校验和    |     十六位紧急指针    |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |              选项(若有)             |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |             数据(若有)             |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+           TCP首部结构 0          1          2          3   0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  | 版本 | 长度 | 八位服务类型 |     十六位总长度     |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |      十六位标识     | 标志|  十三位片偏移     |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  | 八位生存时间 |  八位协议  |     十六位首部校验和   |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |           三十二位源IP地址            |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |           三十二位目的IP地址           |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |             选项(若有)             |  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+  |               数据               |  +-+-+-+-+-+-+-+-+-+-+-+- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+            IP首部结构  |   IP首部   |  TCP首部   |  TCP数据段   | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
敌敌畏耶 2015-01-06
  • 打赏
  • 举报
回复
引用 5 楼 Z65443344 的回复:
[quote=引用 4 楼 yuekunge 的回复:] 一般自定义报文的时候, 都是 报文头+报文体+数据长度
数据长度一般会写在报文头里面,而不是放到末尾 否则数据丢包,只收到一半的话,根本没法校验到底是否合法 而报文头一半是固定长度,这样如果收到的数据长度连报文头的长度都不足,明显是非法的,收到了报文头之后再校验后面的数据长度[/quote] 这个是对的
Tucker_blog 2015-01-06
  • 打赏
  • 举报
回复
用JSON呗。
by_封爱 版主 2015-01-06
  • 打赏
  • 举报
回复
引用
能实现简单字符串的发送和接收
大哥 就是字符串而已 还格式个毛 还协议个毛啊.... 无非就是把string跟byte[]转换而已..... 你想多了......
江南小鱼 2015-01-06
  • 打赏
  • 举报
回复
推荐使用json
於黾 2015-01-05
  • 打赏
  • 举报
回复
引用 4 楼 yuekunge 的回复:
一般自定义报文的时候, 都是 报文头+报文体+数据长度
数据长度一般会写在报文头里面,而不是放到末尾 否则数据丢包,只收到一半的话,根本没法校验到底是否合法 而报文头一半是固定长度,这样如果收到的数据长度连报文头的长度都不足,明显是非法的,收到了报文头之后再校验后面的数据长度
敌敌畏耶 2015-01-05
  • 打赏
  • 举报
回复
一般自定义报文的时候, 都是 报文头+报文体+数据长度
kangkang08 2015-01-05
  • 打赏
  • 举报
回复
其实楼主说的应该是报文格式吧,这个基本都是自己定义的, 一般报文 都是报文头+报文体,头存指令集之类的,报文体存数据, 其实都是“自定义”
於黾 2015-01-05
  • 打赏
  • 举报
回复
自己定义呗 你到底要传什么东西,是传字符串,传数据,传文件,传datatable,传结构体,传实体类,有的可以通过序列化反序列化,有的只能自己做好编码解码的工作 还有防粘包,防丢包,如何校验长度是否正确,如何重发,如何续传,这些都要自己写代码,没有一个属性让你设置一下拉倒的
wangyue4 2015-01-05
  • 打赏
  • 举报
回复
xml序列化

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧