разное время ожидания для каждого клиента - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь установить простую связь TCP между сервером и несколькими клиентами. Каждый поток на стороне сервера связывается с другим клиентом. Я хотел бы установить различное время ожидания чтения для каждого потока, но не смог этого сделать. Заданное время ожидания просто не имеет никакого эффекта. Это метод, который прослушивает новых клиентов и создает новый поток для каждого

private void listen() {

        try {
            while (true) {
                Socket socket = this.server.accept();
                String clientAddress = socket.getInetAddress().getHostAddress();
                System.out.println("New connection from " + clientAddress);

                Thread Server = new Thread(new ServerRunner(socket));
                Server.start();
            }
        } catch (Exception e) {
            System.err.println(e.getMessage());
        }
    }

, и именно так я пытаюсь установить время ожидания для этого сокета, но это не имеет никакого эффекта

Socket socket;
    BufferedReader reader;
    PrintWriter writer;

    ServerRunner(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        try {
            this.socket.setSoTimeout(some_time_in_ms);
            this.reader = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
            this.writer = new PrintWriter(new OutputStreamWriter(this.socket.getOutputStream()), true);

            System.out.println("From " + this.socket.getRemoteSocketAddress() + " Device connected!");

Я что-то не так делаю? Почему тайм-аут полностью принят? И что еще более важно, как это можно исправить, чтобы у каждого потока было различное время ожидания?

...