Несколько TCP-соединений в C - PullRequest
1 голос
/ 20 ноября 2010

Может ли процесс открывать / поддерживать 2 TCP-соединения параллельно?[для отправки и получения].Я попробовал следующий сценарий:

1) Клиент подключается к серверу на одном порту, скажем, 13101.

2) После отправки он будет ждать на другом порту 13102, чтобы получить ACK.

3) Здесь сервер может обрабатывать несколько соединений [используя select () для одного и того же номера порта].

Теперь я сталкиваюсь с двумя проблемами: 1) Сервер получает данные от клиента1, он обрабатываетданных и для отправки ACK обратно [на client1], я готовлю новое TCP-соединение [с портом 13102] и пытаюсь отправить данные.Сбой «Connection Refused».

2). Чтобы проверить вышеуказанную проблему, я написал другую программу client2, которая просто отправляет данные на порт 13102 [на client1, когда он находится в режиме прослушивания].Тем не менее client2 получает сообщение об ошибке «Отказано в соединении».

Ответы [ 2 ]

1 голос
/ 20 ноября 2010

Да, вы можете открыть много розеток! Однако вам не нужны отдельные сокеты для отправки и получения, так как TCP-сокет является двунаправленным после его открытия. Что касается вашей ошибки, если вы используете две машины, может быть брандмауэр, препятствующий подключению сервера к вашему клиенту. Вы можете попробовать использовать telnet, чтобы попытаться подключиться к тому же порту.

0 голосов
/ 03 июня 2015

Возможно, ошибка в том, что клиент не прослушивает входящее соединение. Как указано выше, вы можете использовать один и тот же сокет для отправки и получения.

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