#sockets #port #tuples #serversocket
#сокеты #порт #кортежи #serversocket
Вопрос:
Теперь я хочу использовать serversocket для прослушивания порта x, в то же время я хочу использовать порт x для установления сокета для другого serversocket, это означает, что есть serversocket, и сокет будет использовать один и тот же порт, возможно ли это?
Я знаю, что для сокета это четыре кортежа, один порт может иметь несколько сокетов, но для сокета и serversocket?
спасибо за ваше внимание!
Комментарии:
1. Что происходит, когда вы пытаетесь это сделать?
2. Почему? Существует несколько веских причин, если таковые вообще имеются, для использования фиксированного номера исходящего порта.
3. если я создам один serversocket и сокет с одним портом <br> ServerSocket server = новый ServerSocket(2000);//для прослушивания запроса на подключение<br> Сервер сокетов = новый сокет (localIP,2000; DistantIP, DistantPort); // использовать тот же порт для подключения удаленного<br> но есть исключение «Уже используется»? <br> Поскольку сокет состоит из четырех кортежей, я думаю, что этой проблемы не должно быть, или есть какое-то другое решение?
4. @seaguest: Как вы думаете, почему не должно быть этой проблемы? Что мешает всему 4-му кортежу быть одинаковым? Если компьютер имеет только один IP-адрес и использует один и тот же порт для обоих, что мешает компьютеру подключиться к удаленному IP / порту, который точно соответствует входящему соединению в одно и то же время?
Ответ №1:
Трудно понять ваш вопрос, потому что неясно, когда вы говорите «порт», имеете ли вы в виду порт источника или порт назначения.
Если ваш вопрос таков: «Могу ли я принимать входящие подключения через порт X, а также выполнять исходящие подключения к порту X?» Ответ — да. (Вы можете привязываться к и подключаться к одному и тому же порту.)
Если ваш вопрос таков: «Могу ли я прослушивать порт X, а также осуществлять исходящие соединения с порта X?» Ответ отрицательный — если только вы не используете два разных локальных IP-адреса. Для TCP на одном IP-адресе вы можете привязаться к порту только один раз. Если вы привязываетесь к прослушиванию, с этого момента порт зарезервирован для входящих подключений, которые вы будете принимать — вы не сможете привязаться к нему снова, чтобы делать исходящие подключения с него.
Комментарии:
1. если я создам один serversocket и сокет с одним портом, ServerSocket server = новый ServerSocket(2000);//для прослушивания запроса на подключение Сервер сокетов = новый сокет (localIP,2000; DistantIP, DistantPort); // использовать тот же порт для подключения удаленного, но есть исключение «Уже используется»? Однако я видел, что некоторые ptogram используют один и тот же порт для прослушивания и связи, возможно, я неправильно понял это, это действительно невозможно?
2. Программа может прослушивать порт 8080, а также подключать исходящие соединения к порту 8080. Программа не может прослушивать порт 8080, а также осуществлять исходящие соединения с порта 8080.
3. » Могу ли я прослушивать порт X, а также осуществлять исходящие соединения с порта X? » — с флагом SO_REUSEPORT это действительно возможно