【问题标题】:Unable to read data from InputStream无法从 InputStream 读取数据
【发布时间】:2013-10-31 19:35:06
【问题描述】:

我正在尝试学习java socket编程,但是我在InputStream的读取功能上遇到了麻烦。 起初,我创建了一个套接字来连接到服务器。连接建立后,服务器返回“连接建立”的消息,读取功能正常。然后我尝试向服务器发送字节消息,但我无法从 InputStream 读取数据,因为我的程序卡在“in.read(buf)”行。谁能指出我该如何解决这个问题。

Socket client = new Socket("xxx.xxx.xxx.xxx", 45000);
    InputStream in = client.getInputStream();
    OutputStream out = client.getOutputStream();
    for (int i = 0; i < 5; i++) {
        byte[] buf = new byte[1024];
        int data_size = in.read(buf);
        String msg = "";
        for (int j = 0; j < data_size; j++) {
            msg += String.valueOf((char) buf[i]);
        }
        System.out.println(msg);
        out.write(65);
        out.flush();
    }

【问题讨论】:

标签: java sockets socket.io inputstream


【解决方案1】:

InputStream.read() 是一个阻塞调用。鉴于您提供的代码,您在写入套接字之前从套接字读取,因此您将在第一次读取时永远阻塞。或者至少在超时之前。

【讨论】:

    【解决方案2】:

    @Peter 可能是对的。此外,在使用后关闭流可能有助于避免意外问题。

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 2012-10-20
      • 1970-01-01
      • 2013-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多