Сервер прослушивает, скажем, порт 3000. Когда он получает запрос на соединение и соединение успешно, если я вызываю функцию, скажем, «getRemotePort», он скажет 1234 Мой вопрос в том, что сервер отправит данные удаленному устройству (клиенту) на порт 1234, но как насчет другого пути? Будет ли клиент продолжать отправлять данные на одном и том же порту, в этом случае 3000? Итак, все, что получит сервер (запросы на соединение и другие данные), будет поступать через один и тот же порт?Сервер, получающий данные после подключения
ответ
- Да будет
- Это не проблема.
Дело в том, что соединение определяется тупелем (LocalIP, LocalPort, RemoteIP, RemotePort) - это единственная комбинация, которая должна быть уникальной.
С точки зрения производительности это тоже не проблема: порт представляет собой логическую конструкцию, которая не оказывает ограниченного влияния на пропускную способность соединения, некоторые отрезки в сторону (очень высокая латентность в сочетании с очень высокой пропускной способностью может создавать случай, когда одно соединение не может насытить физическую связь, поэтому второе соединение, требующее второго порта, может ускорить работу. Разумеется, хотя и в этом случае не количество портов, а количество подключений - они просто 1: 1)
Итак, если бы я закрыл все порты на сервере и оставил только 3000, например, сервер может обрабатывать все подключения через этот порт? ... ему не нужно больше – AndreiBogdan
Да, это так. –
Большое спасибо. – AndreiBogdan
Вы говорите о конкретном протоколе/приложении/и т. д.? Потому что сейчас я думаю, что все, что мы могли бы сказать, это «Это зависит от того, как вы его программируете». –
Я реализовал сервер на Java, к которому подключено несколько устройств Android, и я действительно не знаю, как работают соединения. Сервер обрабатывает несколько подключений на порту 3000 (как запросы на соединение, так и другие данные) или что ... – AndreiBogdan