已有下位机通过ip转串口映射到ip+端口上去(物理通信没有问题了),现在下位机需要接受客户端发送过去的一串16进制的命令请求,然后返回结果,由于需要做成b/s的模式,所以现在想用java做客户端,问一下该怎么样书写?原因是java中在socket中只能传byte的数组;而byte的范围有限(-127~128)对于大的数就会溢出;问一下怎么样解决?
解决方案
20
20
1. SOCKET传输的单位一直都是二进制,没有十六进制、整型、字符串之分,通信双方需要根据协议进行相应的类型转换。
2. 对于数值型,对应的二进制是大于一个字节的,又有大端、小端的区别,即高位字节在前还是在后。
你说的串口只接收16进制数据
一种情况是你理解有误,其实是对方是将二进制数据以16进制表达出来而已
另一种情况是需要将数值转换为16进制字符串,例如 整数10,对应的十六进制是0x0A,那你可能需要发送“0A”这个字符串
你给出的IPv4的地址,一种就是常见的4段式的字符串,还可以用int表示,也许串口段需要的是这个int值
2. 对于数值型,对应的二进制是大于一个字节的,又有大端、小端的区别,即高位字节在前还是在后。
你说的串口只接收16进制数据
一种情况是你理解有误,其实是对方是将二进制数据以16进制表达出来而已
另一种情况是需要将数值转换为16进制字符串,例如 整数10,对应的十六进制是0x0A,那你可能需要发送“0A”这个字符串
你给出的IPv4的地址,一种就是常见的4段式的字符串,还可以用int表示,也许串口段需要的是这个int值