libGDX включает в себя некоторые классы для кросс-платформенной работы с сетью. Эти классы более известны как Gdx.net, смотрите документацию и исходный код.
Особенности
- Кросс-платформенные HTTP запросы.
- Поддержка мультиплатформенного TCP клиента и сервер сокета (исключая GWT) с настраиваемыми параметрами.
- Оптимизированный TCP клиент и серверные настройки, направленные на низкую задержку.
- Кросс-платформенный доступ к браузеру. Например, вы можете создать ссылку на ваш сайт в игре, и она откроет браузер на всех платформах.
Реализация
Описание классов:
- Net – интерфейс, используемый для кросс-платформенной сети. Здесь вы можете получить объекты, необходимые для общения с сетью.
- Socket – это интерфейс, который предоставляет вам адрес удаленного сокета, состояние соединения, потоки
java.io.InputStream
иjava.io.OutputStream
для работы с сокетом. - SocketHints – класс, используемый для настройки клиентских TCP сокетов.
- ServerSocket – интерфейс, используемый для создания серверный TCP сокетов. Он предоставляет стандартный
accept()
метод для получения подсоединенного TCP клиента. - ServerSocketHints – класс используется для настройки серверных TCP сокетов.
- HttpStatus – класс используется для простого способа узнать возвращенный код состояния.
- HttpParameterUtils – класс используется для предоставления вспомогательных методов для HTTP запросов.
Чтобы создать клиентский TCP сокет, используйте метод newClientSocket()
:
Socket socket = Gdx.net.newClientSocket(Protocol protocol, String host, int port, SocketHints hints);
Чтобы создать серверный TCP сокет, используйте метод newServerSocket()
:
ServerSocket server = Gdx.net.newServerSocket(Protocol protocol, int port, ServerSocketHints hints);
Чтобы отправить HTTP запрос, используйте метод sendHttpRequest()
:
Gdx.net.sendHttpRequest(HttpRequest httpRequest, HttpResponseListener httpResponseListener);
Чтобы открыть системный браузер, используйте метод openURI()
:
Gdx.net.openURI(String URI)
Примечания
Существуют замечания при работе с сетью на различных платформах.
- Клиентские и серверные TCP сокеты не работают в GWT. Это связано с тем, что java.net не поддерживается в GWT и на данный момент не существует альтернатив, кроме WebSockets.
- Запуск браузера не поддерживается в Android Daydreams и живых обоях. Это связанно с ограничениями в реализации и/или платформы.
- На Android: для доступа к сети вы должны объявить следующие разрешение в AndroidManifest.xml файле:
<uses-permission android:name="android.permission.INTERNET" />
- На Android: вы не можете получить доступ к сети в главном потоке без отключения строгого режима. Это делается для предотвращения сетевых операций в главном потоке. Смотрите подробнее о строгом режиме.
- На мобильных устройствах: будьте осторожны при реализации сети. Само беспроводной соединение, когда включено, потребляет много энергии. Так же будьте осторожны с ограничениями данных, которые могут возникнуть в сетях 1G/2G/3G/4G LTE. libGDX имеет оптимизированную конфигурацию для низкой задержки, но все же дает преимущества TCP.
- Поддерживаемые конфигурации сетей различаются между бекендом и Java реализацией.
- В основном потребление энергии батареи происходит при отправке и получении данных с помощью радиосигнала.
Также читайте статью о мобильных данных и эффективности батареи.
Комментариев нет:
Отправить комментарий