首页 > 解决方案 > 如何读取或打印 BufferedReader (InputStreamReader)

问题描述

我正在创建一个新套接字以通过套接字发送字符串,然后套接字生成一个回复(我在 Wireshark 中监视回复)但在代码中我看不到任何答案,只有当我再次使用另一个应用程序连接到套接字时,然后我在第一个套接字连接中收到答案。

public class TCPConnections 
{
    public static void main (String[] args) throws Exception 
    {
        Socket socket = null;
        PrintWriter out = null;
        BufferedReader in = null; 
        String response = "";
        String hostGreetings = "<frame><cmd><id>5</id><hostGreetings><readerType>SIMATIC_RF680R</readerType><supportedVersions><version>V2.0</version></supportedVersions></hostGreetings></cmd></frame>\n";
        String getReaderStatus = "<frame><cmd><id>2</id><getReaderStatus></getReaderStatus></cmd></frame>\n";        
        StringBuilder antwort = new StringBuilder();
        int c; 
        int counter = 0;


     try 
        {
            String host = "30S50RFID01.w30.bmwgroup.net";
            int port = 10001;
            InetAddress address = InetAddress.getByName(host);
            System.out.println("adress: " + address);
            socket = new Socket(address, port);


            System.out.println("Socket connected: " + socket.isConnected());
            System.out.println("Remote Port: " + socket.getPort());
            System.out.println("Traffic Class: " + socket.getTrafficClass());
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            out = new PrintWriter(socket.getOutputStream(), true);
            //byte [] bytes = hostGreetings.getBytes("UTF-8");  
            //System.out.println("UTF-8 = "+bytes);

            if (socket.isConnected()) 
            {
                out.println(hostGreetings);
                System.out.println("Message send:" + hostGreetings);
                System.out.println("Message send:" + socket.getOutputStream());
                System.out.println("Greeting sent, waiting for response");
                Thread.sleep( 2000 );

                boolean reading = true;
                while (reading) {
                    if(in.ready ()){
                        c = (char) in.read();
                        response = response + c;
                        System.out.println("Reply" + response);
                    }else {
                        reading = false;
                    }
                }

               }

            }
            else 
            {
                System.out.println("Socket connected: " + socket.isConnected());
            }
        } 
        catch (IOException ex) 
        {
            System.out.println("Error 1: " + ex.getMessage());
        } 
        catch (InterruptedException ex) 
        {
            Logger.getLogger(TCPConnections.class.getName()).log(Level.SEVERE, null, ex);
        }  
        finally
        {//Closing the socket
            try 
            {   
                System.out.println("Connection will be closed and program terminated");
                out.close();
                in.close();
                socket.close();
            } 
            catch (IOException ex)
            {
                System.out.println("Error 2: " + ex.getMessage());
            }
        }
    }
}` 

标签: javasocketstcpbufferedreader

解决方案


推荐阅读