社区
Java SE
帖子详情
问个Socket发送字节问题
hellokino
2012-06-04 05:45:30
我现在做一个温控接收仪的东西,用TCP连接,但是那边需要发送一个口令:68770000df0 这样的,用16进制发送出去,字节方式,
我现在纠结中,问一下怎么发送16进制的字节,我试过很多方法都不行
...全文
222
7
打赏
收藏
问个Socket发送字节问题
我现在做一个温控接收仪的东西,用TCP连接,但是那边需要发送一个口令:68770000df0 这样的,用16进制发送出去,字节方式, 我现在纠结中,问一下怎么发送16进制的字节,我试过很多方法都不行
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
MiceRice
2012-06-06
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
你不知道ObjectOutputStream在构造时,会往包装流里写入一些标志位的么?
如果不是基于java序列化操作,不要使用ObjectIn/OutputStream
[/Quote]
看了下源码,果然如此,谢谢了。
RDroid
2012-06-06
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
引用 2 楼 的回复:
你以为对方是java虚拟机么?你用 ObjectOutputStream,那头不晕菜才怪
不会晕菜的,我又没发送Object,只是利用它writeLong()函数将long型数据转为byte数组而已。
不过核心仍然是原始数据究竟是什么内容,16进制整数还是字符串,楼主一直没揭秘。
[/Quote]
你不知道ObjectOutputStream在构造时,会往包装流里写入一些标志位的么?
如果不是基于java序列化操作,不要使用ObjectIn/OutputStream
MiceRice
2012-06-06
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
你以为对方是java虚拟机么?你用 ObjectOutputStream,那头不晕菜才怪
[/Quote]
不会晕菜的,我又没发送Object,只是利用它writeLong()函数将long型数据转为byte数组而已。
不过核心仍然是原始数据究竟是什么内容,16进制整数还是字符串,楼主一直没揭秘。
hellokino
2012-06-06
打赏
举报
回复
[Quote=引用 2 楼 的回复:]
你以为对方是java虚拟机么?你用 ObjectOutputStream,那头不晕菜才怪
发送16进制字节指令:
从连接里得到输出流,然后 out.write(0x06);
out.write(0x87);
out.write(0x70);
out.write(0x00);
out.write(0x0d);
out.write(0xf0);
估计就差不多……
[/Quote]
已经解决了,但还是谢谢了
beiouwolf
2012-06-05
打赏
举报
回复
话说...68770000df0 <- 这个东西是String还是一个字节数组...你也不说清楚...
字符串的话
String str = 68770000df0;
OutputStream os = somewhere.getOutputStream(); // 获取你的输出流
os.write(str.getBytes());
os.flush();
字节数组就直接发送就行了
byte[] buf = {0x06,0x08,0x07,0x07,0x00,0x00,0x00,0x00,0x0d,0x0f,0x00 };
OutputStream os = somewhere.getOutputStream(); // 获取你的输出流
os.write(buf);
os.flush();
AND:流操作都是直接操作字节的,不知道你说的试了很多方法都不能操作字节是肿么回事...
AND..16进制,10进制,2进制只是为了让我们方便"观看"字节的值而已,字节就是字节...
RDroid
2012-06-04
打赏
举报
回复
你以为对方是java虚拟机么?你用 ObjectOutputStream,那头不晕菜才怪
发送16进制字节指令:
从连接里得到输出流,然后 out.write(0x06);
out.write(0x87);
out.write(0x70);
out.write(0x00);
out.write(0x0d);
out.write(0xf0);
估计就差不多了
MiceRice
2012-06-04
打赏
举报
回复
是指十六进制的字符串么?那么就是:
String str = "68770000df0";
byte[] message = str.getBytes();
写就随意了,write(byte);
如果是要将该十六进制转为数值来发送,那么就是:
String str = "68770000df0";
long data = Long.parseLong(str, 16);
写的时候注意用ObjectOutputStream.writeLong(data);
需要提醒你的是,一般这种都会有结束符,否则对方无法判定你这个口令字符串多长才结束,你需要了解下这个问题。
PHP使用
Socket
发送
字节
流
例如,需要
发送
以下数据 struct header { int type; // 消息类型 int length; // 消息长度 } struct MSG_Q2R2DB_PAYRESULT { int serialno; int openid; char payitem[512]; int billno; int zoneid; int providetype;
java
socket
字节
数组_通过java
socket
发送
一个大
字节
数组
我有一个长度超过1200000的大
字节
数组 . 我想通过DataOutputStream
发送
它,并通过DataInputStream在客户端接收 .我正在使用代码out.write(outData)in.readFully(inData)out是DataOutputStream,在DataInputStream中,outData是我想要
发送
的
字节
数组 . 当我运行程序时,如果
字节
数组的长度大约是1...
socket
传送
字节
流
因为考虑到数据传送的安全性.所以,用
字节
流进行
socket
的传输..例子如下: 客户端: //获得流 byteOut = new ByteArrayOutputStream(); out = new DataOutputStream(byteOut); //转为
字节
流 byte[] messes=message.getBytes("GBK"); //获得长度 int l
客户端app多个线程对一个
socket
发送
数据
客户端一般是一个
发送
线程,一个
socket
多个
发送
线程竞争一个
socket
没什么意义,不会提高
发送
速度,因为
socket
只有一个,只要
socket
在
发送
一个线程的数据时,该
socket
就被占用了,是不会响应其他线程的
发送
数据请求的。除非客户端维护有多个
socket
。 服务端使用多线程向多个客户端同时
发送
数据是因为服务端维护着多个
socket
,每个
socket
对应一个客户端session连接。 参考: 客户端:多线程使用单个
SOCKET
发数 请教:多线程使用同一个
socket
进行数据收发会出现什么
问题
?
java
socket
字节
读取_使用Java 1用
socket
程序
发送
和接收
字节
数组 2用十六进制的形式显示每个
字节
里面的内容...
展开全部我们定义
发送
者和接收者32313133353236313431303231363533e58685e5aeb931333337623430,
发送
者作为客户端,接收者作为服务端。Sender.javaimportjava.io.DataOutputStream;importjava.io.IOException;importjava.net.
Socket
;importjava.uti...
Java SE
62,635
社区成员
307,269
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章