如何在java

时间:2015-09-23 16:28:20

标签: java sockets tcp tcpclient

我正在使用套接字使用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循环中运行并且不打印任何内容。如何检查响应是否已结束?

0 个答案:

没有答案