объясните, пожалуйста, как создать соединение с использованием внешних адресов

SFML и C++ Уроки \ Разработка игр Форумы SFML Network объясните, пожалуйста, как создать соединение с использованием внешних адресов

В этой теме 2 ответа, 3 участника, последнее обновление  BunDem 1 месяц, 2 нед. назад.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #4962

    pupsiquell
    Участник
    Сообщений:0

    Зарегистрирован:
    31.01.2018

    Репутация:0

    Здравствуйте, может кто-нибудь объяснить механизм связи компьютеров с помощью внешних ip-адресов, чтобы в игру можно было играть, сидя в разных сетях, а не только по локальной сети. Использую tcp-сокет: когда пытаюсь подключиться к сети с помощью внутреннего адреса-проблем нет(192.168…), а когда пытаюсь подключиться с помощью внешнего адреса, программа какое-то время пытается подключиться, потом выдает статус “==Socket::None”. Буду очень признателен, если поможете или хотя бы объясните принцип связи(желательно конечно на живом примере). Заранее спасибо!

    #4965

    KindRedSand
    Участник
    Сообщений:82

    Зарегистрирован:
    05.04.2017

    Репутация:30

    А вам знакомо определение Port Forwarding? У хоста должно быть правильное перенаправление портов, отсутсвие строгого NAT и в принципе открытый целевой порт. В первую очередь вам нужно проеврить это. Проверить доступность можно через сервис 2ip.
    Моё объяснение будет всё же неправильным, но для понимания картины думаю сойдёт.
    При TCP подключении устанавливается Point to Point соединение, в котором происходит вещание между 2 клиентами. Один ожидает подключение – второй производит дозвон. Когда оба устройства находят друг друга они начинаю с определённой переодичностью посылать между собой Ping Pong запроы(Жив ли собеседник или нет). При каждой отправке данных от одного клиента ко второму посылается последовательность байтов в синхронном режиме (Т.е. чтение 0 и 1 с определённой переодичностью о которых устройства скажем так договариваются сами.) и по окончании передачи части байтов клиент вещающий переходит в режим чтения ожидая ответа от того кто принимал. Если ответ положительный -> идёт следующая порция байтов, если ошибка -> последовательность передаётся заного.

    #5160

    BunDem
    Участник
    Сообщений:101

    Зарегистрирован:
    10.05.2015

    Репутация:22

    Полагаю, проблема в том, что у вас и\или второго хоста закрыты порты. Если в домашней сети используется роутер, посмотрите как для вашего роутера сделать перенаправление портов. Дело в том, что внешним ip обладает именно роутер, а он уже решает, кому какие данные передавать внутри сети ( те самые адреса 192.168…). Чтобы настроить игровой сервер(и не только игровой), вам нужно задать роутеру, какой порт, запрашиваемый из вне, будет передавать данные вашему компьютеру. Если не настроено перенаправление, роутер будет игнорировать внешние попытки подключения к вам, так как не знает кому это подключение нужно.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)

Для ответа в этой теме необходимо авторизоваться.