关于java网络编程中获取输入流中数据的问题?

//服务器端接收消息的类。定制端口号为8888
serviceSocket = new ServerSocket(10000);
//获取socket。这个方法是阻塞式的
socket = serviceSocket.accept();
inputStream = socket.getInputStream();
byte buf[] = new byte[1024];
int len = 0;
len =inputStream.read(buf);
//打印客户端的消息
System.out.println(new String(buf,0,len));
//向客户端生成响应
outputStream = socket.getOutputStream();
outputStream.write("收到".getBytes());

使用如上代码没然后问题。服务端可以获取客户端的数据。客户端也可以获取服务端的响应。但如果把其中inputStream的读取数据方式改为如下:

while((len=inputStream.read(buf))>0){
//此处拼接客户端的消息
}

//在循环外向客户端相应
outputStream = socket.getOutputStream();
outputStream.write("收到".getBytes());

此时就会出错。服务端无法获取客户端的数据。客户端也无法获取服务端的响应。通过一个循环来不断读取流中的数据是io流的通常做法。为什么这儿不行。。。求解。

1个回答

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐