如何得到Socket收到数据的长度

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_37758967/article/details/98849587

最近做的一个项目,需要从网口拿到数据,然后从Socket中取出数据并放入到 byte[] 中 ,收到的数据并不是字符串
一开始使用byte[] buf=new byte[100]; 来事先定义长度,长度太长会导致后面多了很多0,长度不好控制。

然后从网上找到的一个,先定义100,然后读完之后知道长度后再重新定义长度,但是试过之后发现数据结果不唯一,也就是数据

会出现错误。

byte[] buf=new byte[100];
int len=socket.getInputStream().read(buf);
byte[] buf1=new byte[len];
socket.getInputStream().read(buf1);

最后在进去Socket.getInputStream()类里面找到一个获取流大小的方法available(),如下:

List<InputStream> inputList = new ArrayList<InputStream>();
InputStream in = c_Socket.getInputStream();
inputList.add(in);
byte[] b = new byte[inputList.get(i).available()];
int i = inputList.get(i).read(b);

猜你喜欢

转载自blog.csdn.net/weixin_37758967/article/details/98849587