//服务器端接收消息的类。定制端口号为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流的通常做法。为什么这儿不行。。。求解。