我正在使用套接字使用TCP进行连接,我想进行不同的调用。例如获取InputValue 我有这些类型的不同请求,我想从已经运行的服务器。
Socket client = new Socket(serverName, port);
System.out.println("Just connected to "
+ client.getRemoteSocketAddress());
OutputStream outToServer = client.getOutputStream();
DataOutputStream out = new DataOutputStream(outToServer);
String func="Get inputvalue";
byte[] tRequest = encoder.string2bytes(func);
out.write(tRequest);
out.flush();
System.out.println("write done");
InputStream inFromServer = client.getInputStream();
DataInputStream in =
new DataInputStream(inFromServer);
System.out.println("Server says " + in.readUTF());
它表示已连接,因为刚刚连接的打印输出已打印。还会打印写入完成的打印但不返回任何数据,程序将继续运行。 如果我使用telnet,那么这个相同的请求调用将成功返回数据。
所以问题是如何在java中进行TCP调用?
更新:我通过以下方式解决了这个问题:
PrintWriter toServer =
new PrintWriter(client.getOutputStream(),true);
BufferedReader fromServer =
new BufferedReader(
new InputStreamReader(client.getInputStream()));
toServer.println("Get inputvalue\r\n");
String line = "";
System.out.println("Client received: ");
while ((line = fromServer.readLine()) != null) {
System.out.println(line);
}
但程序继续在while循环中运行并且不打印任何内容。如何检查响应是否已结束?