java socket发送十六进制字节内容发生变化的问题解决

各种IO的错误使用.

今天遇到的这个问题搁置了一两个小时.还真是不该.

我发送的如下的内容:

0d 0d 07 80 00 01 01 02 03 04 05 06 07 08 0d 里面的80总是显示不正确.只要是大于80的数值的十六进制数,都是显示错误的.

我很疑惑.

这里最终得到了解决.但是其中的一些经历记下来.

我到这时候才明白, JAVA里面的char是2字节的.byte是1字节的.

因此里面改用byte的.如果用了char然后又强制转换的要谨慎.调试器里面的字符赋值0x80  [\uff80],字节0x80的显示  [0x80]


我的这次编程用到socket读取数据之前用的是下面这一类的.我换了各种类型的.发现有编码之类的问题.其实我只想要原来的字节内容.

BufferedReader mBufferedReaderClient
mBufferedReaderClient = new BufferedReader(
new InputStreamReader(mSocketClient.getInputStream()));
if ((count = mBufferedReaderClient.read(buffer)) > 0)


最后找到的解决办法是,用最原始的

int rcvLength;

byte[] buff = new byte[1024];
InputStream inputStream = mSocket.getInputStream();

while ((rcvLength = inputStream.read(buff)) > 0)
{


这里就得到byte数组了.

这些都怪我之前没有学过用过java.遇到老板强奸的项目了,才拿来用.原来真多的基础内容没有掌握.




在HTML中,通常不会直接处理网络通信的细节,如TCP协议和SOCKET编程。HTML主要负责描述网页的结构和内容,而网络通信是在浏览器或服务器后台进行的。不过,如果你想在网页中使用JavaScript来通过WebSocket协议或者XMLHttpRequest对象进行网络通信,那么可以实现发送和接收数据的功能。 在TCP协议下,使用SOCKET进行通信时,通常会使用编程语言提供的库或API来创建SOCKET连接,然后发送数据。当使用SOCKET发送数据时,通常需要将数据转换为字节流。在发送十六进制数据时,可以将十六进制字符串转换为字节序列,然后发送。 以下是一个简单的例子,假设使用Python语言和socket库来发送十六进制数据: ```python import socket # 创建一个TCP/IP socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 连接到服务器 server_address = ('hostname', 10000) print('连接到 %s 端口 %s' % server_address) sock.connect(server_address) # 准备要发送十六进制数据 hex_data = '48656c6c6f' # 对应于 ASCII 的 "Hello" binary_data = bytes.fromhex(hex_data) # 发送数据 print('正在发送: %s' % binary_data) send = sock.send(binary_data) # 关闭连接 print('已关闭连接') sock.close() ``` 在这个例子中,首先创建了一个TCP/IP socket,然后连接到服务器的指定端口。接着,定义了要发送十六进制字符串,并将其转换为字节序列。之后使用`send`方法将字节序列发送到服务器。最后关闭了socket连接。 如果你想要在Web页面中实现类似的功能,可以使用JavaScript中的WebSocket API来与服务器建立一个持久的TCP连接,并通过该连接发送和接收数据。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

零点零一

您的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值