Как мне связать мой внутренний IP с моим внешним ip?

Если вы используете ориентацию getResources (). GetConfiguration (). На некоторых устройствах, вы ошибетесь. Мы использовали этот подход первоначально в http://apphance.com . Благодаря удаленному ведению журнала Apphance мы могли видеть его на разных устройствах и увидели, что фрагментация играет здесь свою роль. Я видел странные случаи: например, чередование портрета и квадрата (?!) в HTC Desire HD:

CONDITION[17:37:10.345] screen: rotation: 270 orientation: square
CONDITION[17:37:12.774] screen: rotation: 0 orientation: portrait
CONDITION[17:37:15.898] screen: rotation: 90
CONDITION[17:37:21.451] screen: rotation: 0
CONDITION[17:38:42.120] screen: rotation: 270 orientation: square

или отсутствие изменения ориентации вообще:

CONDITION[11:34:41.134] screen: rotation: 0
CONDITION[11:35:04.533] screen: rotation: 90
CONDITION[11:35:06.312] screen: rotation: 0
CONDITION[11:35:07.938] screen: rotation: 90
CONDITION[11:35:09.336] screen: rotation: 0

С другой стороны, width () и height () всегда корректны (они используются оконным менеджером, так что должно быть лучше). Я бы сказал, что лучшая идея - ВСЕГДА проверять ширину / высоту. Если вы подумаете о моменте, это именно то, что вы хотите - узнать, если ширина меньше высоты (портрет), наоборот (пейзаж) или они одинаковы (квадрат).

Тогда это сводится к этому простому коду:

public int getScreenOrientation()
{
    Display getOrient = getWindowManager().getDefaultDisplay();
    int orientation = Configuration.ORIENTATION_UNDEFINED;
    if(getOrient.getWidth()==getOrient.getHeight()){
        orientation = Configuration.ORIENTATION_SQUARE;
    } else{ 
        if(getOrient.getWidth() < getOrient.getHeight()){
            orientation = Configuration.ORIENTATION_PORTRAIT;
        }else { 
             orientation = Configuration.ORIENTATION_LANDSCAPE;
        }
    }
    return orientation;
}

1
задан 07.05.2020, 08:30

2 ответа

Просто как 1, 2, 3 ...

  1. Подписаться на службу DNS
  2. Установить программу обновления DNS в локальной сети
  3. Направить входящий трафик на нужный компьютер

Подписаться на DNS service

Сервер доменных имен, или DNS, сопоставляет IP (внешние) адреса с доменными именами. Хотя возможно создать свой собственный DNS, лучше всего оставить это профессионалам, таким как:

  • DYN Удаленный доступ - это то, что я использую, $ 25 в год. Вы можете указать свое собственное доменное имя или выбрать поддомен из одного из множества собственных доменов (yourchoice.homedns.org). Вы можете направить 31 разных IP-адресов.
  • no-ip - имеет три версии, которые могут маршрутизировать 3 IP-адреса, и вы должны использовать их доменные имена. Оплата за версию составляет $ 19. Я никогда не использовал их, но они очень популярны.
  • Amazon Route 53 - $ 0,50 за каждую размещенную зону / месяц для первых 25 размещенных зон. Вероятно, самый дешевый маршрут, если вам нужен только маршрут 1 IP.

Вы не ошибетесь, просто выберите один и зарегистрируйтесь! Для получения дополнительной информации о DNS см .:

http://en.wikipedia.org/wiki/Domain_Name_System

Установите средство обновления DNS в вашей локальной сети

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

Однако я настоятельно рекомендую использовать ваш маршрутизатор, он потребляет мало энергии, всегда включен и более надежен, чем компьютер. Большинство маршрутизаторов позволят вам ввести имя пользователя и пароль для dyn (или других сервисов), и это сделает все остальное. Некоторые интернет-провайдеры предоставляют маршрутизаторы / модемы, которые не могут / не хотят этого делать. Если это ваш (или чей-то другой случай), просто прокомментируйте, и я включу эти инструкции.

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

Направляйте входящий трафик на нужный компьютер

В вашей домашней сети, скорее всего, есть маршрутизатор, который отвечает за входящий / исходящий трафик маршрутизатора через определенные порты через брандмауэр маршрутизатора. Основные шаги:

  1. Определите требуемые порты для переадресации. Это зависит от типа приложения, от того, кто написал программное обеспечение, и от того, как оно настроено, но для умственного развития вам нужно 25565. portforward.com предоставляет ресурсы для многих приложений.

  2. Войдите в свой маршрутизатор

  3. Назначьте вашему компьютеру фиксированный IP-адрес (вы можете использовать DHCP, если он способен перенаправлять на MAC-адрес

  4. Переадресация желаемых портов на IP / MAC-адрес

Дополнительные ресурсы

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

Также обязательно проверьте:

http://portforward.com/softwareguides/minecraft/portforward-minecraft.htm

0
ответ дан 07.05.2020, 08:31

Во-первых, вам необходимо зарегистрировать свой домен (www.my-website.com) у провайдера DNS, который предоставляет доступ к API, такого как Amazon Web Services (маршрут 53).

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

wget -O - -q icanhazip.com.

Сценарий должен обнаруживать, изменился ли IP (отличается от кэшированного значения) и, если это так, использует IP в запросе API для обновления записей сервера имен.

Наконец, вам нужно использовать переадресацию портов на маршрутизаторе для маршрутизации входящих запросов на статический IP-адрес, который вы хотите обработать, например, запрос. 192.168.0.1. Вам также нужно будет сохранить частный IP-адрес вашего компьютера, либо установив статические IP-адреса, либо настроив все, что предоставляет службу DHCP (обычно это «домашний концентратор»). К сожалению, все хабы имеют разные функции, поэтому я не могу вам помочь. Например, мой BT-концентратор может отображать переадресацию портов на устройства на основе MAC, а не на IP-адреса, так что вы все равно можете иметь динамический статический IP-адрес.

Я рекомендую AWS исключительно потому, что у них много SDK, которые поддерживают различные языки, поэтому вы, вероятно, найдете один для предпочитаемого вами языка, однако вам нужно будет создать учетную запись, и она не будет «бесплатной, как в пиве». .


Я только что заметил, что вы пометили вопрос «minecraft», и в этом случае я настоятельно рекомендую вместо этого просто получить VPS , поскольку это будет иметь гораздо лучшую скорость загрузки, а также гораздо более надежное подключение к интернету. например VPS будет иметь статический IP-адрес, поэтому у вас не будет простоев, пока обновляются серверы имен. Также немного сложнее перевести сервер minecraft в автономный режим с DDoS-атакой, чем домашнее соединение, в зависимости от поставщика, с которым вы работаете (некоторые даже предлагают защиту от DDoS как продукт , что выходит за рамки этот ответ).

Если, однако, вы решите продолжить маршрут по домашнему хостингу, вам нужно будет перенаправить TCP-порт 25565 на ваш частный IP-адрес на маршрутизаторе для Minecraft, если вы не измените порт по умолчанию на вашем сервере.

0
ответ дан 07.05.2020, 08:32

Теги

Похожие вопросы