Как установить таймаут в этом сокетном соединении и отправить данные клиенту? - PullRequest
1 голос
/ 01 апреля 2019

Я взял Socket Ip и порт, который вводится вручную, и теперь я хочу установить тайм-аут для подключения через сокет.А также, как отправить данные клиенту в коде ниже.

 public void run() {
            try {
                socket = new Socket(eHostIp.getText().toString(), Integer.parseInt( eHostPort.getText().toString() ) );
                socket.connect( );
                //PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                //out.println("");
                eReceiveData.setText( "Server Connected" );
                //eReceiveData.setText( socket.getInputStream().read() );

                BufferedReader in = new BufferedReader( new InputStreamReader( socket.getInputStream() ), 1024 );
                eReceiveData.setText( "Server Connected... XXXXXXX" );
                String line;
                while ((line = in.readLine()) != null) {
                    Log.d("read line",line);
                    eReceiveData.setText( line );
                    socket.close();
                }

                socket.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    } );
    thread.start();

1 Ответ

1 голос
/ 01 апреля 2019

Используйте Socket.connect (конечная точка SocketAddress, int timeout) метод для указания времени ожидания.

Для записи в сокет получите выходной поток из него (через socket.getOutputStream ()) и запишите в этот выходной поток.

Примечание: не закрывайте сокет в цикле while!Вы не можете писать в сокет после того, как закрыли его.

...