当前位置: 技术问答>linux和unix
Linux socket udp
来源: 互联网 发布时间:2016-08-23
本文导语: 基于upd的传输方式。 自定义应用协议,可扩展。 要求客户端向服务端发送数据包,服务端将数据包解析后返回一个是否解析数据成功的消息。 怎么去自定义一个应用协议? 协议中的内容除了包含主命令字、次命令字、数...
基于upd的传输方式。
自定义应用协议,可扩展。
要求客户端向服务端发送数据包,服务端将数据包解析后返回一个是否解析数据成功的消息。
怎么去自定义一个应用协议?
协议中的内容除了包含主命令字、次命令字、数据长度、数据,还应该包含那些内容?
还有数据包中tail指针的作用。
|
这个应用协议其实就是自定义一个结构或者类,客户端按照这个结构构造封装消息,服务器端按此结构解析,至于包含那些内容,看你具体应用了,upd只是提供传输的一种方式
|
LS说的很好
应用协议就是你的两个程序间如何更好的沟通,UDP仅仅是一种传输的方式而已,与你自定义的协议没有关系。
需要哪些标志和如何扩展,需要联系到程序具体需要哪些功能,或者说如何使接收端完全理解发送端的意思,以及以后有可能需要理解哪些意思(做个标志,现在可以不解析,以后要的时候解析)。
应用协议就是你的两个程序间如何更好的沟通,UDP仅仅是一种传输的方式而已,与你自定义的协议没有关系。
需要哪些标志和如何扩展,需要联系到程序具体需要哪些功能,或者说如何使接收端完全理解发送端的意思,以及以后有可能需要理解哪些意思(做个标志,现在可以不解析,以后要的时候解析)。
|
我们的数据协议:
每个数据包为1024byte
信息头32Byte ,包括30Bytes指令+有效数据长度2,数据包992Bytes。
每个数据包为1024byte
信息头32Byte ,包括30Bytes指令+有效数据长度2,数据包992Bytes。
|
恩,可是实现起来好难啊。总是出现一些错误
|
自己定义还不好,自己随便整,UDP的话,常见设计有:
长度 |命令字 |信息数据这个就随便整了 |校验
就这样最好了,不要标志头标志尾,那都是串行协议才会用的.
有长度就能读到所有数据,而不会越界.
校验:可选方式有 CRC ,和 ,异或
好了把分给我吧.
长度 |命令字 |信息数据这个就随便整了 |校验
就这样最好了,不要标志头标志尾,那都是串行协议才会用的.
有长度就能读到所有数据,而不会越界.
校验:可选方式有 CRC ,和 ,异或
好了把分给我吧.
|
socket 最后一个参数就是啊 UDP还是tcp是0 我记不是很清了