我有一段代码while(bConnected){//是否成功连接标志正确true时,无限循环监听用户发来的信息dl=dis.readInt();//读取接收到的包头的值System.out.println("要读的包长度:"+dl);dis.r...
我有一段代码
while (bConnected) {// 是否成功连接标志正确true时,无限循环监听用户发来的信息
dl = dis.readInt();// 读取接收到的包头的值
System.out.println("要读的包长度:"+dl);
dis.read(buf, 0, dl);// 读取长度为dl的包信息内容
parse(is);// 调用解析消息的方法
}
为什么连接成功之后,大部分情况都挺好的,通信正常。
可以同样的操作,在有些时候会出现这样的状况。
客户连接服务器成功之后,服务器阻塞在readInt这里等待用户发送信息,这时用户向服务器发送信息,结果客户端没有任何反应。无论等待多久都没有反应。
当我把客户端关闭的时候,一关掉客户端服务器哪里马上就显示接收到了信息,而且还是我客户端发送想信息没错。
这是什么原因,向高手请教,有什么办法解决让客户端发送信息后,不会要等到客户端关闭服务器才有接收的反应。
java部分:
ServerSocket ss= new ServerSocket(8888);
boolean fwqStart= true;
Socket s = ss.accept();
this.dis= new DataInputStream(s.getInputStream());
int dl;
while(true) {
bais.reset();
is.reset();
dl= dis.readInt();
System.out.println("要读的包长度:" + dl);
}
}
展开