socket客户端,向服务器端发送数据

新需求,客户端和服务器端,进行通信。

客户端持有某个客户的账号,向服务器端发出查询请求。

服务器端收到账号后,查询服务器端本地信息,返回客户的其他基本信息,给客户端。

 

socket + json形式进行消息传递。

 

所以我这里需要做的是,客户端的实现。发送json请求数据,接收json反馈数据。

 

本以为,客户端嘛,直接Socket socket = new Socket(“xxx.xxx.xxx.xxx”,9999);

连接上socket,然后将字符串数据以byte的形式发送过去就ok了。但是我想的简单了。

数据的传递用socket是没有问题的。但是客户端和服务器端,进行通话,必须要求客户端和服务器端处理的方式是一致的。

 

这里需要解决几个问题

1,发送的数据长度的问题

2,“大端”,“小端”的问题

 

关于发送的数据长度的问题

a,假如要发送字符串 String strAccount = “zhangsan”;

b,那么需要将发送的数据strAccount转换为byte: byte[] byteAccount = strAccount.getByte();

c,然后计算byteAccount的长度 : int length = byteAccount.length;

d,下面是将长度intLength 也转换为byte形式: byte[] byteLength ?(这个地方的计算方式,后面会记录)

e,最后将byteLength 和 byteAccount合并,并用socket发送给服务器端。

这就可以了。

 

 

服务器端提供的接口的说明文档写着:长度字段,占四个字节。并且小端在前,大端在后。

 

int转为byte,占的长度

大端小端问题

 

当然这里该说一下 d,这一步了。

在d中,将int长度转换为byte形式,

 

 

这里可能还有验证的问题,也就是在socket发送的数据中,也包含crc循环冗余校验等数据。更复杂的,可能还要有加密等数据。

这里暂不记录。