java socket 发送16进制数据-串口通信

J2EE 码拜 8年前 (2016-05-27) 3589次浏览
已有下位机通过ip转串口映射到ip+端口上去(物理通信没有问题了),现在下位机需要接受客户端发送过去的一串16进制的命令请求,然后返回结果,由于需要做成b/s的模式,所以现在想用java做客户端,问一下该怎么样书写?原因是java中在socket中只能传byte的数组;而byte的范围有限(-127~128)对于大的数就会溢出;问一下怎么样解决?
解决方案

20

引用:

原因是java中在socket中只能传byte的数组;而byte的范围有限(-127~128)对于大的数就会溢出;问一下怎么样解决?

java中的socket可以传任何东西,只是你需要找到相应的封装流封装一下,例如你需要传int,可以用DataInputStream和DataOutputStream

20

1. SOCKET传输的单位一直都是二进制,没有十六进制、整型、字符串之分,通信双方需要根据协议进行相应的类型转换。
2. 对于数值型,对应的二进制是大于一个字节的,又有大端、小端的区别,即高位字节在前还是在后。
你说的串口只接收16进制数据
一种情况是你理解有误,其实是对方是将二进制数据以16进制表达出来而已
另一种情况是需要将数值转换为16进制字符串,例如 整数10,对应的十六进制是0x0A,那你可能需要发送“0A”这个字符串
你给出的IPv4的地址,一种就是常见的4段式的字符串,还可以用int表示,也许串口段需要的是这个int值

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明java socket 发送16进制数据-串口通信
喜欢 (0)
[1034331897@qq.com]
分享 (0)