/*
通常的,对一个文件描述符指定的文件或设备, 有两种工作方式: 阻塞 与非阻塞 。
所谓阻塞方式的意思是指, 当试图对该文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待 状态, 直到有东西可读或者可写为止。
而对于非阻塞状态, 如果没有东西可读, 或者不可写, 读写函数马上返回, 而不会等待 。
*/
readLine()方法是阻塞式的方法,通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
但是你只是PrintWriter pw = new PrintWriter(s.getOutputStream(), true); 没有写换回或回车。
这个时候服务器短实际上是接受到客户端了,也就是服务器端运行到这里了String str = br.readLine(); 但是客户端这个时候已经运行完毕,并且关闭了连接。
所以就会出现异常。你PrintWriter pw = new PrintWriter(s.getOutputStream()+"\n",true)这样写试试。
|