一个简单的自定义通信协议(socket)

               

转自:http://vtrtbb.javaeye.com/blog/849336

这是转自javaeye的一篇文章,作者是vtrtbb。

按照网络通信的传统,我们都会自定义协议,这有很多好处,大家可以自己体会(嘿嘿)。

 

 

一直不知道socket通信时候自定义数据包是什么样子的,偶然做了个小例子。

 

先来说说数据包的定义,我这里是包头+内容 组成的:其中包头内容分为包类型+包长度, 那就是 消息对象=包类型+包长度+消息体

 

包类型 byte 型

包长度 int 型

消息体 byte[]

 

包总长度为 1 + 4 +  消息体.getBytes().length

 

发包方法如下:

private void sendTextMsg(DataOutputStream out,String msg ) throws IOException {          byte[] bytes= msg.getBytes();          int totalLen = 1 + 4 + bytes.length;                                  out.writeByte(1);          out.writeInt(totalLen);          out.write(bytes);          out.flush();      }   

 

客户端发送消息类为:

import java.io.DataOutputStream;  import java.io.IOException;  import java.io.InputStream;  import java.io.OutputStream;  import java.net.Socket;  import java.net.UnknownHostException;  import java.util.Scanner;    public class MsgClient {        private DataOutputStream outs;            public static void main(String[] args) {          try {              MsgClient client = new MsgClient();              client.connServer("

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
dut自定义socket协议是指在网络通信中使用自定义协议规则,而不是使用标准的TCP或UDP协议。之所以需要自定义socket协议,是因为标准的协议不能满足特定的通信需求,或者为了提高通信的效率和安全性。 自定义socket协议可以根据实际应用场景的需求来设计,通常包括以下几个方面: 1. 协议头部:自定义协议需要一个头部来描述整个数据包的结构和内容。头部可以包含一些标识字段,用于标识数据包的类型、长度、版本等信息。 2. 数据格式:自定义协议需要定义数据的格式和编码方式。可以使用固定长度的数据包,也可以使用变长的数据包。数据可以是二进制格式,也可以是文本格式,根据实际需求选择合适的编码方式。 3. 数据传输:自定义协议需要确定数据的传输方式。可以使用TCP协议提供的可靠传输机制,也可以使用UDP协议提供的不可靠传输机制。根据实际需求,选择合适的传输方式。 4. 数据校验:自定义协议可以添加数据校验的机制,用于验证数据的完整性和正确性。可以使用CRC校验、MD5校验等方式来实现。 5. 协议扩展:自定义协议需要支持扩展,以适应未来的需求变化。可以预留一些字段和标识位,用于后续的功能扩展和协议升级。 需要注意的是,自定义socket协议虽然可以满足特定的需求,但也存在兼容性和复杂性的问题。在实际应用中,需要权衡各种因素,选择合适的协议方式。同时,为了保证通信的可靠性和安全性,还需要进行充分的测试和验证工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值