无法从InputStream读取数据
我正在尝试学习java套接字编程,但是我在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();
}
InputStream.read()是一个阻塞调用。 考虑到你提供的代码,在写入套接字之前,你正在从套接字读取数据,所以你将永远阻止第一次读取。 或者至少在超时之前。
@彼得可能是对的。 另外,在使用它们之后关闭流可能有助于避免意外问题。
链接地址: http://www.djcxy.com/p/78377.html