Как прочитать или распечатать BufferedReader (InputStreamReader) - PullRequest
0 голосов
/ 23 апреля 2019

Я создаю новый сокет для отправки строки через сокет, затем сокет генерирует ответ (я отслеживаю ответ в 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());
            }
        }
    }
}` 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...