Я пытаюсь установить простую связь 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!");
Я что-то не так делаю? Почему тайм-аут полностью принят? И что еще более важно, как это можно исправить, чтобы у каждого потока было различное время ожидания?