Подключение к нескольким серверам из одного клиентского сокета C - PullRequest
2 голосов
/ 23 марта 2011

У меня есть один клиент, который пытается подключиться к моему главному серверу с помощью сокета s1. Клиент должен продолжать пытаться подключиться к главному серверу с s1, но в то же время подключаться и продолжать посылать «пробные» сообщения на мой вторичный сервер. Является ли хорошей идеей создать 2 сокета, повторно использовать порт и создать 2 привязки для этих 2 сокетов, или есть более эффективные способы достижения этого? Это на стороне клиента и с использованием сокетов C. Спасибо.

Ответы [ 3 ]

5 голосов
/ 23 марта 2011

Если ваша программа является клиентом для нескольких серверов, используйте один сокет на сервер.Вам вообще не нужно bind для клиентского сокета, просто connect.

1 голос
/ 23 марта 2011

Поскольку вы можете вызывать connect(2) только один раз для потоково-ориентированного сокета, вам действительно необходимо использовать как минимум два сокета для двух одновременных подключений (или попыток подключения).

Вам не нужно bind(2) ничего на клиентских портах, кроме странных случаев. (Я думаю о демоне portmapper Sun RPC, но, к счастью, прошло уже почти десять лет с тех пор, как я заботился о демоне portmapper. Кроме того, rlogin требовалось bind(2) в качестве клиента при использовании метода аутентификации хоста, который было ужасно.)

1 голос
/ 23 марта 2011

Я думаю, что вы используете сокет TCP (не так ли?).Так что нужен один разъем для подключения.Тогда повторно использовать порт не так важно, потому что ваше приложение является клиентским приложением, которое является частью запуска соединенияЛюбой исходящий порт должен быть в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...