Можно подключиться с помощью обратной связи (127.0.0.1), но не используя мой IP-адрес

Я использую библиотеку под названием Lidgren network, которая обрабатывает все сетевые части моего приложения. Он использует UDP.

У меня никогда не было проблем с приложениями TCP и переадресацией портов (apache, FTP, SMTP и т. Д.). Я сделал несколько приложений TCP, используя TCP, и я мог подключиться без проблем.

Сейчас я делаю онлайн-игру и использую UDP для передачи по сети. Я перенес его в моем маршрутизаторе, и он работает. Когда я использую свой удаленный IP-адрес (190.136.243.40) для подключения к нему, я не могу. Когда я использую loopback (127.0.0.1), я могу подключиться без каких-либо проблем.

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

Вот часть моего кода:

public static class ServerInfo
{
    static ServerInfo()
    {
        ServerAddress = Dns.GetHostAddresses("leboran.dyndns.org")[0];
    }
    public const short Port = 6483;
    public static IPAddress ServerAddress;
    public const string AppIdentifier = "UnnamedGameNet";
    public static byte[] MagicByte
    {
        get
        {
            return new byte[4] { 0xF1, 0x64, 0x83, 0xC4 };
        }
    }
}

Это часть, где я запускаю свой сервер, вероятно, не важно:

public void StartServer()
{
    this.listenThread = new Thread(ListenForClients);
    peerConfig = new NetPeerConfiguration(SharedConstants.ServerInfo.AppIdentifier);
    peerConfig.Port = SharedConstants.ServerInfo.Port;
    peerConfig.EnableMessageType(NetIncomingMessageType.DiscoveryRequest);
    peerConfig.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
    peerConfig.ConnectionTimeout = 2144124;
    netServer = new NetServer(peerConfig);
    listenThread.Start();
}

Я использую порт 6483. Я использую сервер Minecraft на порту 25565, и он отлично работает, так что это неплохая конфигурация на маршрутизаторе

3 ответа

Некоторые компьютеры имеют несколько ips, на самом деле все они делают, что вы, вероятно, испытываете, вы привязали свое приложение к прослушиванию порта 127.0.0.1 вместо 64.323.23.234 или в идеале 0.0.0.0, который связывал бы все ваши ips. Проверьте, позволяет ли peerConfig выбрать IP-адрес, с которым вы связываетесь по умолчанию, может быть 127.0.0.1

Также может быть проблема с маршрутизатором. Попробуйте сделать ваш компьютер DMZ или включить переадресацию портов.

Я не думаю, что это связано с кодом.

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

Если вы просто хотите иметь возможность подключиться к адресу dyndns, поэтому вам не нужно менять код, вы также можете изменить файл хостов Windows.

Многие потребительские маршрутизаторы используют источник пакета, чтобы определить, следует ли обрабатывать данные как внутренние или внешние. Другими словами, если вы находитесь в своей внутренней сети и пытаетесь получить доступ к любому из IP-адресов вашего маршрутизатора, ваш маршрутизатор будет рассматривать его как внутренний (т. Е. Отвечает на порт 80 веб-сайтом настройки, большинство других не отвечает).

К сожалению, решения трудно найти.

Другие вопросы по тегам