求助~如何在socket不断的情况下,收发16进制的数据?

lz757258 2014-01-10 03:06:55
手头有个项目,要求socket不断开,然后收发16进制的数据,只需要写客户端就够了,我已经实现了16进制数据的发送,可是如何接收?
private Socket socket;
private DataOutputStream ostream = null;
private BufferedReader istream = null;

String fs = "要发送的数据";
new Thread() {
public void run() {
String str = null;

try {

if (socket == null) {
socket = new Socket(ip, Integer.valueOf(dk));
ostream = new DataOutputStream(
socket.getOutputStream());
istream = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
这样写可以吗?socket是不会断,可是奇怪的是服务器目前是我发什么它回什么,但我之前用发送字符做测试的时候第一次发的东西总是会在第二次才能收到,这是为什么呢?

}
String arr[] = fs.split(" ");
byte[] b = new byte[arr.length];
for (int i = 0; i < arr.length; i++) {
b[i] = Hex.hexStringToBytes(arr[i])[0];
}
ostream.write(b);

ostream.flush();

str = istream.readLine();这里用什么东西接收?




} catch (Exception e) {
e.printStackTrace();
Log.e("e", e.toString());
try {
if (ostream != null) {
ostream.close();
}
if (istream != null) {
istream.close();
}
if (socket != null) {
socket.close();
socket = null;
}
} catch (Exception e1) {
e1.printStackTrace();
}

}

};
}.start();
...全文
230 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kevinlifeng 2014-01-25
  • 打赏
  • 举报
回复
顶一个吧~~~基础很重要
825609451 2014-01-25
  • 打赏
  • 举报
回复
支持3楼。。。。。。。。
你好毒你好毒 2014-01-13
  • 打赏
  • 举报
回复
lz757258 2014-01-13
  • 打赏
  • 举报
回复
搞定了…………BufferedReader改成DataInputStream byte[] b2 = new byte[1024]; istream.read(b2); 写成这样就好了……
lcf 2014-01-13
  • 打赏
  • 举报
回复
我其实真的不懂什么叫“十六进制数据”。网络上传输的数据都是二进制的,你所说的“十六进制”只是一个字符串而已,跟socket那一层还离得老远呢。 我真心希望程序员要踏实,从基础学起,从搞懂基本概念做起,不然你的水平永远只能停留在搜代码,改一改,而不会具备系统架构以及性能优化的能力。 “十六进制数据”我已经看到很多次了,看不下去了,发个牢骚

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧