Почему Telnet не отображает первый символ после открытия соединения (Java SocketServer)? - PullRequest
0 голосов
/ 26 сентября 2019

Почему telnet не отображает первый введенный мной символ?(код ниже)

Я принимаю подключение и настройку входных / выходных потоков.Я посылаю 'a', и in.read () принимает его, отправляет в устройство записи (дата), а затем клиент telnet out.write должен записать чтение / вывод aA

inputtream на терминале telnet, например,

a / aA

b / bB

0/00

Проблема: клиент получает результат, но никогда не повторяет запрос по первому ключу после открытия соединения.

public class InToOut_BlockingServer {


    public static void main(String[] args) throws IOException {
/*
        * The actual work of the server socket is performed by an instance
        * of the {@code SocketImpl} class.
*/

        // Open a port to accept connections on 8080
        ServerSocket srvrSocket = new ServerSocket(8080);

        while (true) {

            // Wait for the socket, Blocks until someone connects Todo
            Socket socket = srvrSocket.accept(); // never null

            InputStream in = socket.getInputStream();
            OutputStream out = socket.getOutputStream();


            // Read

            int data;

            while((data=in.read())!=-1  ){

                out.write(DataUtil.reorder(data));
            }

            // CLOSE
            out.close();
            in.close();
            socket.close();
        }
    }
}

class DataUtil{

    public static int reorder(int data){

        // IF data is letter, return bit-or data,001000002 (space)
        // ELSE, return data
        return Character.isLetter(data) ? data ^ ' ' : data;
    }
...