【问题标题】:What's wrong with the OutputStreamWriter used to write in socket for server?用于写入服务器套接字的 OutputStreamWriter 有什么问题?
【发布时间】:2014-02-19 06:57:56
【问题描述】:

我正在尝试学习套接字编程。我使用InputStreamReader 编写客户端并使用BufferedReader 读取从服务器发送的消息。 对于服务器,如果我使用print 方法编写PrintWriter 它可以工作,而使用write 方法则不行,为什么? 而OutputStreamReader 一点用处都没有,因为它没有print 方法,而使用write,我没有在客户端收到消息。

客户:

Socket c=new Socket("143.22.165.27",6000);
        InputStreamReader isr=new InputStreamReader(c.getInputStream());
        BufferedReader br=new BufferedReader(isr);
        String s=br.readLine();
        System.out.println(s);

服务器

Socket sock=s.accept();
             OutputStreamWriter out =
                     new OutputStreamWriter(sock.getOutputStream());
                 out.write("...........");

【问题讨论】:

  • 您可以向我们展示您的代码。

标签: java sockets io


【解决方案1】:

我假设您在客户端的BufferedReader 上使用readLine() 方法。所以我的猜测是,当您在服务器上使用 write() 方法时,您没有编写任何换行符。因此,客户端永远不会到达行尾。每当您调用 println() 方法时,PrintStreamPrintWriter 都会为您添加换行符。

当然,没有任何代码,甚至没有问题描述,都很难确定。

【讨论】:

    【解决方案2】:

    每次要通过 out.write(msg) 发送部分数据时,都必须使用 out.flush()。

    【讨论】:

      猜你喜欢
      • 2021-04-30
      • 1970-01-01
      • 2021-08-30
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多