我开发了一个小型java客户机,它可以与安装在unix服务器上的工具进行通信。我第一次使用socket,所以可能会出错。我也仅限于Java6。
简而言之,代码如下所示
我使用套接字建立连接。
Socket socket = new Socket();
SocketAddress socketAddress = new InetSocketAddress(endpoint, port);
socket.connect(socketAddress, 5000);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
以下是我发送信息的方式
out.println("Hello");
out.flush();
下面是我如何解读回应的
String res = "";
int letter;
while(letter = in.read() != -1) {
char c = (char) letter;
res += c;
}
f、 如果我发送一条信息“你好”,我将收到两行的答案(见下面的例子)
> Hi there
> My name is Robot
当我读到“robot\n”之后的下一个字符时,这些东西卡住了,我希望在.read()中是这样-1将是真的,因此它将停止自己,但这不是一个情况,相反,一切只是卡住。
这可能是什么原因?如何解决?谢谢。
请让我知道如果我需要提供更多的信息。
1条答案
按热度按时间7xzttuei1#
在读取之前,我必须关闭输出writer,否则它会阻塞。
答案来自一位后来删除了自己答案的人:-/