#java #sockets #network-programming #port #serversocket
#java #сокеты #сетевое программирование #порт #serversocket
Вопрос:
в каждой программе сокета Java у нас есть Serversocket и клиентский сокет с номерами портов
Меня смущает механизм связи, у нас есть фиксированный номер порта для сервера, и для сервера очевидно, что он принимает соединения с одним номером порта, однако у нас разные порты от клиентов, я имею в виду, что каждый раз, когда я печатаю, он выдает мне другой номер порта
System.out.println("caught a client : " client.getInetAddress() " : " client.getPort());
Я хочу знать причину, по которой номер порта клиента каждый раз отличается
Спасибо
Ответ №1:
Соединение с сокетом TCP идентифицируется 4 полями: адрес источника и порт, а также адрес назначения и порт. Если бы вы использовали фиксированный порт на стороне клиента, вы не смогли бы установить другое соединение с тем же сервером и портом.
Обычно не имеет значения, какой порт выбирает клиент, если он не используется. Большинство программ предоставляют операционной системе возможность найти свободный порт.
Комментарии:
1. На самом деле это важно. Очень важно различать вновь созданное соединение сокетов.
2. @zgulser пояснил, что неважно, какой порт вы выбираете, при условии, что он бесплатный