5

Я задавался вопросом , возможно ли соединить два входящих сокета TCP .
Например:

Client A  ----->  Server  <----- Client B

Сервер отправляет свое волшебство обоим клиентам, а затем они соединяются друг с другом в обход сервера

                  Server
Client A  ----------><---------- Client B

ОБНОВИТЬ:

Идея заключается в том, что эти клиенты не могут подключиться к портам для прослушивания, чтобы по-прежнему иметь возможность создавать соединение друг с другом с помощью сервера.

Например, у клиента A и клиента B есть сокеты tcp с сервером. Пользователь A решает пообщаться с пользователем B и создает новое tcp-соединение с сервером с просьбой соединить его с пользователем B. Сервер отправляет этот запрос клиенту B, а также открывает новое tcp-соединение с сервером для этого чата. линия.

Теперь, когда сервер имеет оба чата-соединения от A и B, он соединяет их, и они могут работать без сервера, и в результате серверу не придется обрабатывать все сообщения и файлы, которыми обмениваются два пользователя. Это идея/

1 ответ1

1

Неясно, находятся ли оба клиента в одной сети. Я предполагаю, что это не так, иначе этот вопрос не возник бы.

Из вышеприведенного предположения следует, что один клиент не может напрямую адресовать пакет TCP/IP другому клиенту, поэтому для этого абсолютно необходим мост. Таким образом, в общем случае ответ заключается в том, что это невозможно - мост всегда будет требоваться в качестве посредника.

Однако, если оба клиента подключены к Интернету через маршрутизатор, они могут использовать Интернет в качестве моста, например, с помощью программного обеспечения pwnat . Для более подробной информации смотрите этот мой ответ .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .