繁体   English   中英

无法从InputStream读取数据

[英]Unable to read data from InputStream

我正在尝试学习Java套接字编程,但是InputStream的读取功能遇到了麻烦。 首先,我创建了一个套接字以连接到服务器。 建立连接后,服务器将发回“连接已建立”消息,并且读取功能正常。 然后,我尝试将字节消息发送到服务器,但是由于我的程序停留在“ in.read(buf)”行中,因此无法从InputStream读取数据。 谁能指出我该如何解决这个问题。

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();
    }

InputStream.read()是一个阻塞调用。 给定您提供的代码,您在写套接字之前先要从套接字中读取内容,因此您将永远无法进行第一次读取。 或至少直到超时为止。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM