说明:得将数据从内存以字节输出流写入到网络中,不知道为什么出这种错误,纠结,自觉地没写错。
错误图示如下:
出错地方图示如下:
客户端:
服务端:
InputStream inputStream = socket.getInputStream(); byte[] bytes = new byte[inputStream.available()]; int num = inputStream.read(bytes); String string = new String(bytes, 0, num); System.out.println(string);
经过反复测试得知: inputStream.available返回的结果为0 ,所以出错了
总结: 在基于TCP的网络编程中,读取网络中的数据,不能用available方法直接获取全部的长度
换成一次读取多个字符,就运行成功。
还有个小方法: 使用socket.getReceiveBufferSize() 代替 available 获取全部的数据。