socket中传输byte数组数据

客户端:

private Socket socket;
private DataOutputStream out;

out = new DataOutputStream(socket.getOutputStream()); 
byte[] bytes = { 0x03,0x02,0x01 };
out.write(bytes);
服务器端:
private Socket clientSocket;
private DataInputStream in;

in = new DataInputStream(clientSocket.getInputStream());
// 定义一个byte数组用来存放读取到的数据,byte数组的长度要足够大。
byte[] bytes = new byte[100];
in.read(bytes);// 把输入流的数据写入bytes数组中。再依次读取出来即可

String string = new String(bytes,index,length);
Integer integer = new Integer(new String(bytes,index,length));
// 将byte数组中从第index个开始的length个长度的字节转化为string型。
// new String(byte)是将整个byte数组转化为string型。

注:socketClient的输出流 和 socketServer的输入流必须为同一种流(如:DataInputSteam和DataOutputSteam、InputSteam和OutputSteam)
上面的DataOutputStream传输的流以字节的形式存放到了byte数组,再利用new String方法就可以将其转化为string型了。利用PrintWriter相对于繁琐,封装了很多方法在byte和string之间转化不便。
参考:http://blog.sina.com.cn/s/blog_a4bfe8c90101dpst.html
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你在 Android TCP 客户端发送 byte 数组时,发现其长度不能超过 128,这可能是因为你使用了 TCP Nagle 算法。 TCP Nagle 算法是一种优化 TCP 传输性能的算法,它会将发送数据缓存起来,等待一定数量的数据或者一定时间后再一次性发送。这个数量就是 Nagle 算法的阈值,通常为 1 或者 512 字节。在 Android ,这个阈值通常是 128 字节。 如果你没有特别的需求,可以考虑关闭 Nagle 算法,这样就可以发送任意长度的 byte 数组。以下是修改过的 ConnectTask 类示例代码,用于关闭 Nagle 算法: ```java private class ConnectTask extends AsyncTask<Void, Void, Void> { private Socket socket; @Override protected Void doInBackground(Void... voids) { try { // 创建 Socket 对象并连接服务器 socket = new Socket("服务器地址", 12345); // 关闭 Nagle 算法 socket.setTcpNoDelay(true); // 发送数据 OutputStream outputStream = socket.getOutputStream(); byte[] data = {0x01, 0x23, 0x45, 0x67, (byte) 0x89}; outputStream.write(data); // 接收数据 InputStream inputStream = socket.getInputStream(); byte[] buffer = new byte[1024]; int len = inputStream.read(buffer); String receivedData = new String(buffer, 0, len); Log.d("MainActivity", "Received data: " + receivedData); } catch (IOException e) { e.printStackTrace(); } finally { // 关闭 Socket try { if (socket != null) { socket.close(); } } catch (IOException e) { e.printStackTrace(); } } return null; } } ``` 在创建 Socket 对象后,使用 setTcpNoDelay 方法将 Nagle 算法关闭。这样就可以发送任意长度的 byte 数组了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值