socket io 记得flush

  1. public class Client {  
  2.    
  3.    public static void main(String args[]) throws Exception {  
  4.       //为了简单起见,全部的异常都直接往外抛  
  5.       String host = "127.0.0.1";  //要链接的服务端IP地址  
  6.       int port = 8899;   //要链接的服务端对应的监听端口  
  7.       //与服务端创建链接  
  8.       Socket client = new Socket(host, port);  
  9.       //创建链接后就能够往服务端写数据了  
  10.       Writer writer = new OutputStreamWriter(client.getOutputStream());  
  11.       writer.write("Hello Server.");  
  12.       writer.flush();//写完后要记得flush  
  13.       writer.close();  
  14.       client.close();  
  15.    }  
  16.      

对于客户端往Socket的输出流里面写数据传递给服务端要注意一点,若是写操做以后程序不是对应着输出流的关闭,而是进行其余阻塞式的操做(好比从输入流里面读数据),记住要flush一下,只有这样服务端才能收到客户端发送的数据,不然可能会引发两边无限的互相等待。在稍后讲到客户端和服务端同时读和写的时候会说到这个问题。spa

 

BufferedReader的readLine方法是一次读一行的,这个方法是阻塞的,直到它读到了一行数据为止程序才会继续往下执行,那么readLine何时才会读到一行呢?直到程序遇到了换行符或者是对应流的结束符readLine方法才会认为读到了一行,才会结束其阻塞,让程序继续往下执行。因此咱们在使用BufferedReader的readLine读取数据的时候必定要记得在对应的输出流里面必定要写入换行符(流结束以后会自动标记为结束,readLine能够识别),写入换行符以后必定记得若是输出流不是立刻关闭的状况下记得flush一下,这样数据才会真正的从缓冲区里面写入。get

相关文章
相关标签/搜索