Соединение двух розеток

Соединение двух розеток

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

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

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

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

ОБНОВЛЯТЬ:

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

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

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

решение1

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

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

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

Связанный контент