Skip to content

Latest commit

 

History

History
952 lines (952 loc) · 77.3 KB

Multiplayer.md

File metadata and controls

952 lines (952 loc) · 77.3 KB

Список методов в категории Multiplayer:

SetNetworkLocalInteger

Описание

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

Определение

void agk::SetNetworkLocalInteger( UINT iNetID, const char *name, int i, int mode )
void agk::SetNetworkLocalInteger( UINT iNetID, const char *name, int i )

Параметры

iNetID - Идентификатор сети для проверки.
name - Имя этой переменной.
i - Значение для установки этой переменной.
mode - Тип этой переменной: 0=нормальный, 1=сброс

Пример кода


SetNetworkLocalFloat

Описание

Задает локальную переменную float для этого клиента по имени. Затем другие клиенты могут прочитать эту переменную, используя то же имя при запросе ее значения. Переменная с плавающей точкой может не иметь того же имени, что и целочисленная переменная. Если переменная с таким именем не существует, она создается.

Определение

void agk::SetNetworkLocalFloat( UINT iNetID, const char *name, float f )
void agk::SetNetworkLocalFloat( UINT iNetID, const char *name, float f, int mode )

Параметры

iNetID - Идентификатор сети для проверки.
name - Имя этой переменной.
f - Значение для установки этой переменной.
mode - Тип этой переменной: 0=нормальный, 1=сброс

Пример кода


SetNetworkNoMoreClients

Описание

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

Определение

void agk::SetNetworkNoMoreClients( UINT iNetID )

Параметры

iNetID - Идентификатор сети для изменения.

Пример кода


SetNetworkClientUserData

Описание

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

Определение

void agk::SetNetworkClientUserData( UINT iNetID, UINT client, UINT index, int value )

Параметры

iNetID - Идентификатор сети для хранения значения.
client - Идентификатор клиента в сети для хранения значения.
index - Индекс (от 0 до 4) устанавливаемого слота данных.
value - Целочисленное значение для установки.

Пример кода


SetNetworkLatency

Описание

Устанавливает, как часто сеть отправляет обновления и проверяет наличие обновлений переменных от других клиентов в миллисекундах. Чем ниже это значение, тем чаще этот клиент будет отправлять и получать обновления, что означает, что общие переменные с большей вероятностью будут обновляться, но это увеличит сетевой трафик. В случае соединений через Интернет это особенно важно, так как большое количество переменных, которые часто обновляются, означает, что может не хватить пропускной способности. Значение по умолчанию составляет 15 миллисекунд, что переводится примерно в 67 обновлений каждую секунду, чтобы точно соответствовать частоте кадров игры 60 кадров в секунду. Если вы обновляете большое количество переменных через интернет-соединение, рекомендуется увеличить это значение до 50 миллисекунд, что приведет к 20 обновлениям в секунду или более.

Определение

void agk::SetNetworkLatency( UINT iNetID, UINT latency )

Параметры

iNetID - Идентификатор сети, от которой требуется отключиться.
latency - Задержка использования в миллисекундах

Пример кода


SetNetworkAllowClients

Описание

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

Определение

void agk::SetNetworkAllowClients( UINT iNetID )

Параметры

iNetID - Идентификатор сети для изменения.

Пример кода


SendSocketString

Описание

Отправит строку на удаленное соединение. Обратите внимание, что данные отправляются не сразу, для их отправки необходимо вызвать FlushSocket. Если вы отправляете строку в приложение, не являющееся AGK, то строка строится из значения длины 4 байта, за которым следует X байт строковых данных, где X-значение длины. Строка не завершается нулем. Возвращает 1, если строка была успешно записана в буфер, 0, если сокет отключен.

Определение

int agk::SendSocketString( UINT socketID, const char *value )

Параметры

socketID - Идентификатор сокета для записи
value - Значение для отправки

Пример кода


SendUDPNetworkMessage

Описание

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

Определение

void agk::SendUDPNetworkMessage( UINT listenerID, UINT messageID, const char* toIP, int toPort )

Параметры

listenerID - Идентификатор прослушивателя для использования в качестве исходного IP-адреса и порта
messageID - Идентификатор отправляемого сетевого сообщения
toIP - IP-адрес для отправки сообщения
toPort - Порт для отправки сообщения

Пример кода


SendSocketInteger

Описание

Отправит 4-байтовое целое число на удаленное соединение. Обратите внимание, что данные отправляются не сразу, для их отправки необходимо вызвать FlushSocket. Возвращает 1, если целое число было успешно записано в буфер, 0, если сокет отключен.

Определение

int agk::SendSocketInteger( UINT socketID, int value )

Параметры

socketID - Идентификатор сокета для записи
value - Значение для отправки

Пример кода


SendSocketFloat

Описание

Отправит 4-байтовый float на удаленное соединение. Обратите внимание, что данные отправляются не сразу, для их отправки необходимо вызвать FlushSocket. Возвращает 1, если float был успешно записан в буфер, 0, если сокет отключен.

Определение

int agk::SendSocketFloat( UINT socketID, float value )

Параметры

socketID - Идентификатор сокета для записи
value - Значение для отправки

Пример кода


SendSocketByte

Описание

Отправит один байт в диапазоне от -128 до 127 на удаленное соединение. Обратите внимание, что данные отправляются не сразу, для их отправки необходимо вызвать FlushSocket. Возвращает 1, если байт был успешно записан в буфер, 0, если сокет отключен.

Определение

int agk::SendSocketByte( UINT socketID, int value )

Параметры

socketID - Идентификатор сокета для записи
value - Значение для отправки

Пример кода


SendNetworkMessage

Описание

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

Определение

void agk::SendNetworkMessage( UINT iNetID, UINT toClient, UINT iMsgID )

Параметры

iNetID - Идентификатор сети, по которой будет отправлено сообщение.
toClient - Идентификатор клиента, которому нужно отправить сообщение, 0 для отправки всем.
iMsgID - Идентификатор отправляемого сообщения.

Пример кода


KickNetworkClient

Описание

Пинает клиента из сети. Это происходит не сразу, и клиент может оставаться в течение нескольких кадров, прежде чем его окончательно пнут. Клиент отключится обычным способом, вы должны проверить GetNetworkClientDisconnected, чтобы обнаружить, когда клиент был выгнан, а затем вызвать DeleteNetworkClient, чтобы окончательно избавиться от него.

Определение

void agk::KickNetworkClient( UINT iNetID, UINT client )

Параметры

iNetID - Идентификатор сети.
client - идентификатор клиента, которого нужно пнуть.

Пример кода


JoinNetwork

Описание

Присоединяется к сети AGK, размещенной другим приложением. Сеть определяется по имени или по IP-адресу и номеру порта. Для именованных сетей приложение будет искать любые сети AGK, транслируемые с этим именем, и подключаться к ним, если они будут найдены. В качестве альтернативы, используя IP-адрес и номер порта, вы попытаетесь установить прямое соединение с хостом. В случае подключения к Интернету IP-адрес и порт-это единственный способ подключения, так как широковещательные передачи не покидают локальную сеть. IP-адреса могут быть IPv4 или IPv6 в зависимости от того, какие IP-адреса использует хост (он может иметь один или несколько из них). Вы можете обнаружить все сети, доступные для подключения, настроив прослушиватель широковещательных передач и прослушивая их самостоятельно, а затем отобразить список обнаруженных сетей пользователю, чтобы он мог решить, к какой из них подключиться. Эта функция не подключается сразу, она возвращает идентификатор сети и продолжает пытаться подключиться в фоновом режиме. Вы можете определить, когда установлено соединение, проверив, что GetNetworkNumClients больше 1, что указывает на то, что по крайней мере локальный клиент и серверный клиент были обнаружены. Если IsNetworkActive возвращает 0 в любой момент, то соединение с сервером не удалось и сеть должна быть закрыта, вы можете попытаться восстановить соединение, открыв новую сеть. После подключения приложение становится клиентом сети вместе с хостом и любыми другими клиентами, которые подключились к нему. Все клиенты обрабатываются одинаково и имеют список локальных переменных, которые они могут читать и записывать, все клиенты также могут читать любые переменные на других клиентах только для чтения. Вы должны идентифицировать своего клиента с именем клиента, которое будет видно другим клиентам, имя клиента не обязательно должно быть уникальным. Возвращает идентификатор сети, используемый при взаимодействии с этой сетью. Не работает при экспорте в HTML5

Определение

UINT agk::JoinNetwork( const char *szIP, UINT port, const char *szMyName )
UINT agk::JoinNetwork( const char *szNetworkName, const char *szMyName )

Параметры

szIP - IP-адрес хоста для подключения может быть IPv4 или IPv6
port - Порт для подключения.
szMyName - Имя, которое нужно использовать для идентификации этого клиента.
szNetworkName - Имя сети для подключения.

Пример кода


IsNetworkActive

Описание

Проверяет, что сеть активна, в случае присоединения к сети это вернет 0, если соединение не удалось или по какой-то причине соединение с сервером разорвалось. Для хостера эта функция вернет 0, если ему не удалось прослушать указанный порт для клиентов, в противном случае она навсегда вернет 1, так как не перестанет управлять никакими подключенными клиентами, даже если все отключатся.

Определение

UINT agk::IsNetworkActive( UINT iNetID )

Параметры

iNetID - Идентификатор сети для проверки.

Пример кода


HostNetwork

Описание

Создает сеть AGK с этим приложением в качестве контроллера, это приложение добавляется в качестве первого клиента в сеть. Сети AGK идентифицируются по имени и автоматически транслируются всем, кто слушает в локальной сети, а это означает, что другие приложения AGK в локальной сети могут принимать все широковещательные сети, отображать их имена своим пользователям и позволять им выбирать одну из них для присоединения. Приложения AGK вне локальной сети нуждаются в IP-адресе и порту хостера, чтобы присоединиться к сети, этот порт будет нуждаться в переадресации на хост через любой промежуточный брандмауэр. Значение порта должно быть между 1025 и 65535 и завершится ошибкой, если другое приложение уже прослушивает этот порт. Вы также должны указать имя клиента, которое будет использоваться для идентификации вашего клиента, все имена клиентов должны быть уникальными. Это имя будет видно всем остальным клиентам. Клиенты будут добавлены в сеть автоматически и могут быть подсчитаны с помощью GetNetworkNumClients. Вы можете вызвать IsNetworkActive сразу после этой команды, чтобы проверить, что сеть была успешно настроена, после установки сеть не станет неактивной для хостера. После подключения приложение становится клиентом сети, и все другие клиенты, подключающиеся к нему, присоединяются к сети. Все клиенты обрабатываются одинаково и имеют список локальных переменных, которые они могут читать и записывать, все клиенты также могут читать любые переменные на других клиентах только для чтения. Некоторые порты используются AGK для внутренней сети и не должны использоваться вашим приложением. Порты 5689-5692 используются для управления приложениями, транслируемыми из IDE. Порты 45631 и 45632 используются для именованных сетевых соединений. В сетях IPv4 сетевая трансляция идет на все устройства в локальной подсети, в сетях IPv6 трансляция идет на адрес AGK multicast FF02::41:474B. Если устройство имеет как IPv4, так и IPv6 IP-адреса, то хост-сеть будет принимать соединения как из сетей IPv4, так и из сетей IPv6. Если вы укажете 0 для порта, то он отключит IPv4-соединения, если вы установите portv6 в 0, то он отключит IPv6-соединения. По крайней мере один должен быть больше 0, иначе будет сгенерирована ошибка. Если вы вообще не укажете portv6, то он будет установлен в 0. Должно быть безопасно использовать один и тот же порт как для IPv4, так и для IPv6, но это не было широко протестировано. Возвращает идентификатор, который можно использовать для взаимодействия с этой сетью. Не работает при экспорте в HTML5

Определение

UINT agk::HostNetwork( const char *szNetworkName, const char *szMyName, int port, int portv6 )
UINT agk::HostNetwork( const char *szNetworkName, const char *szMyName, int port )

Параметры

szNetworkName - Имя, используемое для идентификации этой сети.
szMyName - Имя, которое нужно использовать для идентификации этого клиента.
port - Порт, который другие клиенты должны использовать для подключения к этой сети при использовании IPv4, 0 для отключения IPv4-соединений.
portv6 - Порт, который другие клиенты должны использовать для подключения к этой сети при использовании IPv6, 0 для отключения соединений IPv6.

Пример кода


GetUDPNetworkMessage

Описание

Проверяет прослушиватель UDP на наличие любых широковещательных передач. Возвращает 0, если ничего не было получено. Возвращает идентификатор сообщения если что-то было получено, вы можете получить доступ к содержимому этого сообщения с помощью команд сетевого сообщения. Сообщение должно быть удалено, когда вы закончите чтение.

Определение

UINT agk::GetUDPNetworkMessage( UINT listenerID )

Параметры

listenerID - Идентификатор прослушивателя для проверки сообщений

Пример кода


GetSocketString

Описание

Будет считывать строку из соединения сокета и возвращать ее. Если вы отправляете строку из источника, отличного от AGK, то строка должна начинаться со значения длины 4 байта, за которым следует X байт строковых данных, где X-значение длины. Строка не должна заканчиваться null. Если существует менее 4 байт данных, ожидающих чтения, то эта команда немедленно вернется и вернет пустую строку. Вы можете проверить, сколько данных нужно прочитать, используя GetSocketBytesAvailable. Если есть 4 или более байтов, ожидающих чтения, то эта команда будет ждать, пока вся строка не будет получена, прежде чем вернуться.

Определение

char* agk::GetSocketString( UINT socketID )

Параметры

socketID - Идентификатор сокета для чтения

Пример кода


GetSocketRemoteIP

Описание

Возвращает IP-адрес компьютера или устройства на другом конце соединения. Это может быть адрес IPv4 или IPv6.

Определение

char* agk::GetSocketRemoteIP( UINT socketID )

Параметры

socketID - Идентификатор сокета для проверки

Пример кода


GetSocketListenerConnection

Описание

Возвращает идентификатор сокета, подключенного к вашему устройству. Прослушиватель будет принимать соединения в фоновом режиме и добавлять их в очередь, эта команда удаляет один из сокетов из очереди и передает вам управление им. Если вы не хотите принимать соединение, вы должны удалить его с помощью DeleteSocket. Вы должны вызвать GetSocketListenerConnection в цикле до тех пор, пока он не вернет 0, чтобы убедиться, что вы справились со всеми подключенными сокетами. Вы можете узнать IP-адрес устройства, которое подключилось к вам, вызвав GetSocketRemoteIP на возвращенном сокете.

Определение

UINT agk::GetSocketListenerConnection( UINT listenerID )

Параметры

listenerID - Идентификатор прослушивателя для проверки

Пример кода


GetSocketFloat

Описание

Будет считывать 4-байтовый float из соединения сокета и возвращать его. Если существует менее 4 байт данных, ожидающих чтения, то эта команда немедленно вернется и вернет 0. Вы можете проверить, сколько данных нужно прочитать, используя GetSocketBytesAvailable.

Определение

float agk::GetSocketFloat( UINT socketID )

Параметры

socketID - Идентификатор сокета для чтения

Пример кода


GetSocketConnected

Описание

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

Определение

int agk::GetSocketConnected( UINT socketID )

Параметры

socketID - Идентификатор сокета для проверки

Пример кода


GetSocketExists

Описание

Возвращает 1, если указанный сокет существует, и 0 в противном случае.

Определение

int agk::GetSocketExists( UINT socketID )

Параметры

socketID - Идентификатор сокета для проверки

Пример кода


GetSocketBytesAvailable

Описание

Возвращает количество байтов, доступных для чтения. Если это возвращает 0, то команды чтения, такие как GetSocketInteger, не будут возвращать никаких данных.

Определение

int agk::GetSocketBytesAvailable( UINT socketID )

Параметры

socketID - Идентификатор сокета для проверки

Пример кода


GetSocketInteger

Описание

Будет считывать 4-байтовое целое число из соединения сокета и возвращать его. Если существует менее 4 байт данных, ожидающих чтения, то эта команда немедленно вернется и вернет 0. Вы можете проверить, сколько данных нужно прочитать, используя GetSocketBytesAvailable.

Определение

int agk::GetSocketInteger( UINT socketID )

Параметры

socketID - Идентификатор сокета для чтения

Пример кода


GetSocketByte

Описание

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

Определение

int agk::GetSocketByte( UINT socketID )

Параметры

socketID - Идентификатор сокета для чтения

Пример кода


GetNetworkServerIP

Описание

Возвращает IP-адрес, используемый сервером. Эта команда работает только на клиентах, так как сервер может получить свой собственный IP-адрес с помощью GetDeviceIP и GetDeviceIPv6.

Определение

char* agk::GetNetworkServerIP( uint32_t iNetID )

Параметры

iNetID - Идентификатор сети для проверки.

Пример кода


GetNetworkServerID

Описание

Возвращает идентификатор клиента клиента хоста. Это полезно, если вы используете сервер для обработки переменных настройки игры, таких как размер доски, длина игры и т. Д., поскольку только хост - клиент должен иметь копию этих переменных.

Определение

UINT agk::GetNetworkServerID( UINT iNetID )

Параметры

iNetID - Идентификатор сети для проверки.

Пример кода


GetNetworkNumClients

Описание

Возвращает количество клиентов, подключенных к указанной сети. Хост считается клиентом, как и локальный клиент. Это означает, что в подключенной сети должно быть не менее 2 клиентов. Хост, ожидающий клиентов, возвращает 1, если он находится сам по себе. Клиент, пытающийся подключиться, возвращает 0 до тех пор, пока он не подключится и хост не примет клиента, предоставив ему уникальный идентификатор, затем он должен вернуть 2.

Определение

UINT agk::GetNetworkNumClients( UINT iNetID )

Параметры

iNetID - Идентификатор сети для проверки.

Пример кода


GetNetworkNextClient

Описание

Возвращает идентификатор клиента следующего клиента в списке клиентов. Используйте эту функцию, чтобы продолжить просмотр списка клиентов, запущенных с помощью GetNetworkFirstClient. Очень важно, чтобы эта команда вызывалась до тех пор, пока она не вернет 0, так как фоновый сетевой код не может продолжаться до тех пор, пока он не узнает, что вы закончили работу со списком клиентов. Локальный клиент также будет возвращен в какой-то момент, который можно обнаружить, сравнив возвращаемый идентификатор с GetNetworkMyClientID. Хост-клиент также будет возвращен в какой-то момент, который можно обнаружить, сравнив возвращаемый идентификатор с GetNetworkServerID.

Определение

UINT agk::GetNetworkNextClient( UINT iNetID )

Параметры

iNetID - Идентификатор сети для проверки.

Пример кода


GetNetworkMyClientID

Описание

Каждому клиенту при подключении хост присваивает уникальный идентификатор. Эта функция возвращает идентификатор, который вам был назначен. Хост также присваивает себе идентификатор, который можно найти с помощью GetNetworkServerID.

Определение

UINT agk::GetNetworkMyClientID( UINT iNetID )

Параметры

iNetID - Идентификатор сети для проверки.

Пример кода


GetNetworkMessageString

Описание

Получает одну строку из сообщения и перемещает указатель сообщения на следующий элемент сообщения. Сообщения должны создаваться и считываться в соответствии с известными форматами, например string, int, string, поскольку у получателя нет непосредственного способа узнать формат сообщения. Вы можете использовать начальное целое число для указания идентификатора типа сообщения, который можно использовать для идентификации формата сообщения.

Определение

char* agk::GetNetworkMessageString( UINT iMsgID )

Параметры

iMsgID - Идентификатор сообщения для чтения.

Пример кода


GetNetworkMessageInteger

Описание

Получает одно целое число из сообщения и перемещает указатель сообщения к следующему элементу сообщения. Сообщения должны создаваться и считываться в соответствии с известными форматами, например string, int, string, поскольку у получателя нет непосредственного способа узнать формат сообщения. Вы можете использовать начальное целое число для указания идентификатора типа сообщения, который можно использовать для идентификации формата сообщения.

Определение

int agk::GetNetworkMessageInteger( UINT iMsgID )

Параметры

iMsgID - Идентификатор сообщения для чтения.

Пример кода


GetNetworkMessageFromIP

Описание

Возвращает IP-адрес, отправивший это сообщение. Только применительно к сообщениям, полученным от UDP и широковещательных прослушивателей, сетевые сообщения будут возвращать пустую строку для этой функции. Он также вернет пустую строку для сообщений, созданных с помощью CreateNetworkMessage. Это может быть адрес IPv4 или IPv6.

Определение

char* agk::GetNetworkMessageFromIP( UINT iMsgID )

Параметры

iMsgID - Идентификатор сообщения для чтения.

Пример кода


GetNetworkMessageFromClient

Описание

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

Определение

UINT agk::GetNetworkMessageFromClient( UINT iMsgID )

Параметры

iMsgID - Идентификатор сообщения для чтения.

Пример кода


GetNetworkMessageByte

Описание

Получает один байт без знака из сообщения и перемещает указатель сообщения на следующий элемент сообщения. Сообщения должны создаваться и считываться в соответствии с известными форматами, например string, int, string, поскольку у получателя нет непосредственного способа узнать формат сообщения. Вы можете использовать начальное целое число для указания идентификатора типа сообщения, который можно использовать для идентификации формата сообщения.

Определение

UINT agk::GetNetworkMessageByte( UINT iMsgID )

Параметры

iMsgID - Идентификатор сообщения для чтения.

Пример кода


GetNetworkMessage

Описание

Проверьте сеть на наличие любых сообщений, отправленных этому клиенту. Если ничего не найдено, он возвращает 0. Если сообщение найдено, оно возвращает идентификатор сообщения, который вы можете использовать для его чтения. Вы должны удалить сообщение с помощью DeleteNetworkMessage, когда закончите его читать. Вы должны продолжать вызывать GetNetworkMessage до тех пор, пока он не вернет 0, чтобы убедиться, что вы получили все сообщения. Вы можете использовать команды чтения сообщений, чтобы узнать, какой идентификатор клиента отправил сообщение.

Определение

UINT agk::GetNetworkMessage( UINT iNetID )

Параметры

iNetID - Идентификатор сети для проверки сообщений.

Пример кода


GetNetworkExists

Описание

Возвращает 1, если сеть существует с заданным идентификатором, в противном случае она возвращает 0.

Определение

int agk::GetNetworkExists( UINT iNetID )

Параметры

iNetID - Идентификатор сети для проверки

Пример кода


GetNetworkFirstClient

Описание

Возвращает идентификатор клиента первого клиента в списке клиентов. Используйте эту функцию, чтобы начать просмотр списка клиентов и продолжить работу с GetNetworkNextClient до тех пор, пока он не вернет 0. Очень важно, чтобы после вызова этой команды GetNetworkNextClient вызывался до тех пор, пока не вернет 0, так как фоновый сетевой код не может продолжать работу до тех пор, пока не будет известно, что вы закончили работу со списком клиентов. Локальный клиент также будет возвращен в какой-то момент, который можно обнаружить, сравнив возвращаемый идентификатор с GetNetworkMyClientID. Хост-клиент также будет возвращен в какой-то момент, который можно обнаружить, сравнив возвращаемый идентификатор с GetNetworkServerID.

Определение

UINT agk::GetNetworkFirstClient( UINT iNetID )

Параметры

iNetID - Идентификатор сети для проверки.

Пример кода


GetNetworkClientUserData

Описание

Считывает один из локальных слотов данных, назначенных клиентскому набору, с помощью SetNetworkClientUserData.

Определение

int agk::GetNetworkClientUserData( UINT iNetID, UINT client, UINT index )

Параметры

iNetID - Идентификатор сети, из которой будет получено значение.
client - Идентификатор клиента в сети, от которого требуется получить значение.
index - Индекс (0-4) считываемого слота данных.

Пример кода


GetNetworkClientPing

Описание

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

Определение

float agk::GetNetworkClientPing( UINT iNetID, UINT client )

Параметры

iNetID - Идентификатор сети для проверки.
client - Идентификатор клиента для проверки.

Пример кода


GetNetworkMessageFromPort

Описание

Возвращает исходный порт, который был использован этим сообщением. Только применительно к сообщениям, полученным от UDP и широковещательных прослушивателей, сетевые сообщения вернут 0 для этой функции. Он также вернет 0 для сообщений, созданных с помощью CreateNetworkMessage. Это будет в диапазоне от 0 до 65535.

Определение

int agk::GetNetworkMessageFromPort( UINT iMsgID )

Параметры

iMsgID - Идентификатор сообщения для чтения.

Пример кода


GetNetworkClientIP

Описание

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

Определение

char* agk::GetNetworkClientIP( uint32_t iNetID, uint32_t client )

Параметры

iNetID - Идентификатор сети для проверки.
client - идентификатор клиента для проверки.

Пример кода


GetNetworkMessageFloat

Описание

Получает один float из сообщения и перемещает указатель сообщения к следующему элементу сообщения. Сообщения должны создаваться и считываться в соответствии с известными форматами, например string, int, string, поскольку у получателя нет непосредственного способа узнать формат сообщения. Вы можете использовать начальное целое число для указания идентификатора типа сообщения, который можно использовать для идентификации формата сообщения.

Определение

float agk::GetNetworkMessageFloat( UINT iMsgID )

Параметры

iMsgID - Идентификатор сообщения для чтения.

Пример кода


GetNetworkClientFloat

Описание

Получает копию переменной float удаленного клиента по имени. Также может быть использован для собственных переменных клиента, если ClientID равен GetNetworkMyClientID. Если переменная была установлена как переменная сброса, она вернется к 0 после чтения, это не повлияет на способность других клиентов считывать исходное значение. Каждый из них сбросит свою собственную копию. Если указанный клиент не установил переменную с заданным именем, то возвращается значение 0.

Определение

float agk::GetNetworkClientFloat( UINT iNetID, UINT client, const char *name )

Параметры

iNetID - Идентификатор сети для проверки.
client - Идентификатор клиента для проверки.
name - Имя возвращаемой переменной.

Пример кода


GetNetworkClientDisconnected

Описание

Проверяет, отключился ли указанный клиент. Отключенные клиенты не удаляются автоматически из списка клиентов, что позволяет вам правильно обрабатывать их очистку. Как только вы справитесь с этим клиентом, вы должны удалить его из списка клиентов, вызвав DeleteNetworkClient. Клиент может сохраняться в течение некоторого времени, пока фоновый сетевой код не начнет фактически удалять его, поэтому будьте готовы к тому, что этот клиент будет болтаться вокруг в течение нескольких кадров, объявляя, что он отключен, и убедитесь, что вы очистите его только один раз. Вы можете обнаружить это, установив одно из значений SetNetworkClientUserData, чтобы уведомить себя о том, что оно было обработано.

Определение

UINT agk::GetNetworkClientDisconnected( UINT iNetID, UINT client )

Параметры

iNetID - Идентификатор сети для проверки.
client - идентификатор клиента для проверки.

Пример кода


GetNetworkClientName

Описание

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

Определение

char* agk::GetNetworkClientName( UINT iNetID, UINT client )

Параметры

iNetID - Идентификатор сети для проверки.
client - идентификатор клиента для проверки.

Пример кода


GetNetworkClientInteger

Описание

Получает копию целочисленной переменной удаленного клиента по имени. Также может быть использован для собственных переменных клиента, если ClientID равен GetNetworkMyClientID. Если переменная была установлена как переменная сброса, она вернется к 0 после чтения, это не повлияет на способность других клиентов считывать исходное значение. Каждый из них сбросит свою собственную копию. Если указанный клиент не установил переменную с заданным именем, то возвращается значение 0.

Определение

int agk::GetNetworkClientInteger( UINT iNetID, UINT client, const char *name )

Параметры

iNetID - Идентификатор сети для проверки.
client - Идентификатор клиента для проверки.
name - Имя возвращаемой переменной.

Пример кода


GetDeviceIPv6

Описание

Возвращает IPv6-адрес текущего устройства, который может быть использован другими устройствами для подключения к этому устройству. Чтобы получить IPv4-адрес, используйте вместо него GetDeviceIP.

Определение

char* agk::GetDeviceIPv6()

Параметры

Пример кода


GetDeviceIP

Описание

Возвращает IPv4-адрес текущего устройства, который может быть использован другими устройствами для подключения к этому устройству. Чтобы получить IPv6-адрес, используйте вместо него GetDeviceIPv6.

Определение

char* agk::GetDeviceIP()

Параметры

Пример кода


GetBroadcastMessage

Описание

Проверяет прослушиватель вещания на наличие любых передач. Возвращает 0, если ничего не было получено. Возвращает идентификатор сообщения если что-то было получено, вы можете получить доступ к содержимому этого сообщения с помощью команд сетевого сообщения. Сообщение должно быть удалено, когда вы закончите чтение.

Определение

UINT agk::GetBroadcastMessage( UINT iID )

Параметры

iID - Идентификатор широковещательного слушателя для проверки.

Пример кода


FlushSocket

Описание

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

Определение

int agk::FlushSocket( UINT socketID )

Параметры

socketID - Идентификатор сокета для проверки

Пример кода


DeleteSocketListener

Описание

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

Определение

void agk::DeleteSocketListener( UINT listenerID )

Параметры

listenerID - Идентификатор прослушивателя для проверки

Пример кода


DeleteSocket

Описание

Удаляет идентификатор сокета, чтобы его можно было использовать снова. Если розетка в данный момент подключена, то сначала соединение закрывается.

Определение

void agk::DeleteSocket( UINT socketID )

Параметры

socketID - Идентификатор сокета для удаления

Пример кода


DeleteUDPListener

Описание

Удаляет указанный UDP-listenere и освобождает порт, который он использовал.

Определение

void agk::DeleteUDPListener( UINT listenerID )

Параметры

listenerID - Идентификатор прослушивателя для удаления

Пример кода


DeleteNetworkMessage

Описание

Удаляет сетевое сообщение, это должно быть вызвано для сообщений, полученных от сетевых устройств, и сообщений, которые не были отправлены на сетевое устройство (если код решает отказаться от отправки сообщения). Сообщения, которые были созданы и отправлены, будут обработаны и удалены сетевым кодом и не должны быть удалены с помощью этой команды.

Определение

void agk::DeleteNetworkMessage( UINT iMsgID )

Параметры

iMsgID - Идентификатор сообщения для чтения.

Пример кода


DeleteNetworkClient

Описание

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

Определение

void agk::DeleteNetworkClient( UINT iNetID, UINT client )

Параметры

iNetID - Идентификатор сети для проверки.
client - идентификатор клиента для удаления.

Пример кода


DeleteBroadcastListener

Описание

Удаляет широковещательный прослушиватель и освобождает порт для прослушивания на нем чего-то другого.

Определение

void agk::DeleteBroadcastListener( UINT iID )

Параметры

iID - Идентификатор прослушивателя широковещательной передачи для удаления.

Пример кода


CreateUDPListener

Описание

Создает прослушиватель UDP, который будет получать UDP-пакеты по указанному IP-адресу и порту. Значение порта должно находиться в диапазоне от 1 до 65535, хотя значения ниже 1024, скорее всего, будут защищены операционной системой. Если порт уже занят, то эта команда завершится ошибкой и вернет 0. IP-адрес может быть адресом IPv4 или IPv6 и может использоваться для привязки к одному входящему сетевому соединению, когда устройство имеет более одного IP-адреса. Для привязки к любому IP-адресу используйте IP-адрес anyip4 или anyip6. Один прослушиватель UDP может прослушивать либо IPv4, либо IPv6-адрес, но не оба одновременно. Для прослушивания обоих вы должны создать два прослушивателя, один для IPv4 и один для IPv6, в этом случае они оба могут использовать один и тот же порт. Эта команда вернет идентификатор прослушивателя, который вы можете использовать для ссылки на него в будущих командах.

Определение

int agk::CreateUDPListener( UINT listenerID, const char* ip, int port )
UINT agk::CreateUDPListener( const char* ip, int port )

Параметры

listenerID - Идентификатор, который будет использоваться для ссылки на этот прослушиватель в будущем.
ip - Локальный IP-адрес для привязки.
port - Локальный порт для привязки.

Пример кода


CreateSocketListener

Описание

Создает прослушиватель сокетов, который прослушивает на указанном порту входящие соединения сокетов. Когда соединение происходит, оно будет удерживаться в очереди до тех пор, пока вы не получите его с помощью GetSocketListenerConnection. Если вы хотите отклонить соединение, вы должны получить его, а затем удалить. Прослушиватель будет продолжать принимать соединения до тех пор, пока он не будет удален. Если ваше устройство имеет несколько сетевых интерфейсов, то вы можете указать, какой из них будет прослушиваться с помощью параметра IP-адрес. Для прослушивания всех интерфейсов используйте пустую строку в качестве IP-адреса. Если устройство имеет оба адреса IPv4 и IPv6, то слушатель может слушать только один или другой, а не оба. Для прослушивания соединений IPv4 и IPv6 необходимо создать два прослушивателя: один для соединений IPv4 и один для соединений IPv6. Соединения из любого из них будут вести себя точно так же после того, как они будут подключены. Чтобы создать прослушиватель IPv6, передайте IPv6 IP-адрес CreateSocketListener или anyip6 для прослушивания любого подходящего IPv6-адреса. Если вы передадите пустую строку или anyip4 в качестве IP-адреса, то он будет прослушивать IPv4-соединения. Вы можете иметь несколько активных слушателей одновременно, но все они должны использовать разные порты или IP-адреса. При выборе номера порта следует избегать низких значений, так как они часто будут использоваться другими приложениями и сервисами. Если что-то уже прослушивает порт, то ваша попытка прослушать его потерпит неудачу. Возвращает 0, если он не смог начать прослушивание.

Определение

int agk::CreateSocketListener( UINT listenerID, const char *szIP, int port )
UINT agk::CreateSocketListener( const char *szIP, int port )

Параметры

listenerID - Идентификатор, который будет использоваться для ссылки на этот прослушиватель в будущем
szIP - IP-адрес интерфейса для прослушивания может быть IPv4 или IPv6, или anyip4, или anyip6
port - TCP-порт для прослушивания находится в диапазоне от 1025 до 65535

Пример кода


CreateNetworkMessage

Описание

Создает сетевое сообщение, которое может быть отправлено на другое сетевое устройство. Он возвращает идентификатор, который можно использовать для взаимодействия с сообщением. Сообщения, созданные таким образом, могут быть только добавлены, а не прочитаны. После передачи в сеть идентификатор сообщения уничтожается и обрабатывается фоновым сетевым кодом.

Определение

UINT agk::CreateNetworkMessage( )

Параметры

Пример кода


CreateBroadcastListener

Описание

Широковещательные передачи являются специальными сетевыми коммуникациями, поскольку они не используют адрес назначения и вместо этого принимаются всеми устройствами в сети. Широковещательные пакеты не пересылаются маршрутизаторами, поэтому могут использоваться только в локальной сети или, точнее, в локальной подсети. Это может быть полезно для обнаружения устройств, поскольку одно устройство может отправить широковещательный пакет, содержащий его IP-адрес, а другое устройство может принять его, прочитать IP-адрес и подключиться обратно к первому устройству, чтобы создать двустороннее соединение. Сети AGK транслируются таким образом на порт 45631 и отправляют пакет, содержащий имя сети, которая была размещена другим устройством AGK. С помощью широковещательного прослушивателя вы можете получать эти сообщения, извлекать имена сетей и отображать их пользователю, чтобы он мог выбрать, к какой сети он хочет подключиться. Если устройство находится в сети IPv6, то эти правила немного меняются. CreateBroadcastListener должен быть вызван с многоадресным адресом, который начинается с ff, например ff02::1, и широковещательный прослушиватель будет принимать только пакеты, отправленные на этот многоадресный адрес. Если адрес не указан, то вещатель будет получать только широковещательные передачи IPv4. Если вы передадите адрес anyip6, то широковещательный прослушиватель будет прослушивать многоадресный адрес AGK FF02::41:474B, который используется для обнаружения именованной сети на порту 45631. Возвращает идентификатор, который можно использовать для взаимодействия с этим широковещательным слушателем.

Определение

UINT agk::CreateBroadcastListener( const char *szIP, UINT port )
UINT agk::CreateBroadcastListener( UINT port )

Параметры

szIP - Многоадресный IP-адрес для прослушивания применяется только к сетям IPv6, если оставить его пустым, то он будет прослушивать широковещательные передачи IPv4.
port - Порт, на который транслируются сообщения, в случае сетей AGK это будет порт 45631.

Пример кода


CopyNetworkMessage

Описание

Создает сетевое сообщение, которое является копией существующего сообщения. Он возвращает идентификатор, который можно использовать для взаимодействия с сообщением. Сообщения, созданные таким образом, могут быть прочитаны с самого начала или добавлены, и источником сообщения может быть либо созданное вами сообщение, либо полученное вами. Новое сообщение становится полностью независимым от исходного сообщения и может быть отправлено с помощью SendNetworkMessage, не затрагивая оригинал.

Определение

UINT agk::CopyNetworkMessage( UINT iFromMsgID )

Параметры

iFromMsgID - Идентификатор сообщения для копирования

Пример кода


ConnectSocket

Описание

Создает сокет и пытается подключиться к указанному IP-адресу. Это создаст TCP-соединение, которое затем можно будет использовать для отправки и получения данных. Эта команда немедленно вернется и подключится в фоновом режиме, вы должны использовать GetSocketConnected, чтобы проверить, успешно ли подключается сокет или нет. Вы должны указать значение тайм-аута, достаточное для подключения сокета, обычно 3000 миллисекунд-это хорошее значение, но для соединений с высокой задержкой может потребоваться больше времени. Если время ожидания соединения истекло, то эта команда вернет 0. Номер порта должен совпадать с портом прослушивания устройства, к которому вы подключаетесь. Это работает немного по-другому при экспорте в HTML5, он использует WebSocket, который отправляет заголовок стиля HTTP и требует ответа стиля HTTP для подключения.

Определение

int agk::ConnectSocket( UINT socketID, const char *szIP, int port, int timeout )
UINT agk::ConnectSocket( const char *szIP, int port, int timeout )

Параметры

socketID - Идентификатор, который будет использоваться для ссылки на этот сокет позже
szIP - IP-адрес для подключения, это может быть IPv4 или IPv6
port - TCP-порт для подключения в диапазоне от 1025 до 65535
timeout - Время в миллисекундах ожидания перед прерыванием попытки подключения

Пример кода


CloseNetwork

Описание

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

Определение

void agk::CloseNetwork( UINT iNetID )

Параметры

iNetID - Идентификатор сети, от которой требуется отключиться.

Пример кода


AddNetworkMessageString

Описание

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

Определение

void agk::AddNetworkMessageString( UINT iMsgID, const char *value )

Параметры

iMsgID - Идентификатор сообщения для изменения.
value - Строка для добавления в сообщение.

Пример кода


AddNetworkMessageFloat

Описание

Добавляет float к ранее созданному сетевому сообщению. Это может быть вызвано для сообщений, созданных CreateNetworkMessage, или для сообщений, полученных из сети.

Определение

void agk::AddNetworkMessageFloat( UINT iMsgID, float value )

Параметры

iMsgID - Идентификатор сообщения для изменения.
value - Значение, которое нужно добавить к сообщению.

Пример кода


AddNetworkMessageByte

Описание

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

Определение

void agk::AddNetworkMessageByte( UINT iMsgID, UINT value )

Параметры

iMsgID - Идентификатор сообщения для изменения.
value - Значение, которое нужно добавить к сообщению.

Пример кода


AddNetworkMessageInteger

Описание

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

Определение

void agk::AddNetworkMessageInteger( UINT iMsgID, int value )

Параметры

iMsgID - Идентификатор сообщения для изменения.
value - Значение, которое нужно добавить к сообщению.

Пример кода