永发信息网

怎么用socket发送byte数组

答案:2  悬赏:70  手机版
解决时间 2021-12-21 01:57
  • 提问者网友:川水往事
  • 2021-12-20 11:10
我有一个char字符,2个int值,怎么把他们存到一个byte数组里面呢?我想用socket把这几个数据通过byte数组一次发送出去,不知道怎么转换。char c = 'M';int x = 8;int y = 9;byte[] data = new byte[];怎么把c x y存到data中,让接收端能正确的再取出值?
最佳答案
  • 五星知识达人网友:往事隔山水
  • 2021-12-20 11:43
客户端:
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);//写入byte数组中。再依次读取出来即可。
-----------------------
String string=new String(byte,off,length);
将byte数组中从第off个开始的length个长度的字节转化为string型。
new String(byte)是将整个byte数组转化为string型。
上面的DataOutputStream传输的流以字节的形式存放到了byte数组,再利用new String方法就可以将其转化为string型了。利用PrintWriter相对于繁琐,封装了很多方法在byte和string之间转化不便。
全部回答
  • 1楼网友:神也偏爱
  • 2021-12-20 11:53
用getcontentresolver().openinputstream(uri)从uri得到个inputstream,然后从inutstream读取数据,把数据转成byte[]public byte[] readbytes(uri uri) throws ioexception { // this dynamically extends to take the bytes you read inputstream inputstream = getcontentresolver().openinputstream(uri); bytearrayoutputstream bytebuffer = new bytearrayoutputstream(); // this is storage overwritten on each iteration with bytes int buffersize = 1024; byte[] buffer = new byte[buffersize]; // we need to know how may bytes were read to write them to the bytebuffer int len = 0; while ((len = inputstream.read(buffer)) != -1) { bytebuffer.write(buffer, 0, len); } // and then we can return your byte array. return bytebuffer.tobytearray(); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯