Задает локальную целочисленную переменную для этого клиента по имени. Затем другие клиенты могут прочитать эту переменную, используя то же имя при запросе ее значения. Параметр 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=сброс
Задает локальную переменную 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=сброс
Останавливает больше клиентов от подключения к этой сети, применимо только в том случае, если вы размещаете эту сеть. Также прекращается вещание сети в локальную сеть, поэтому она больше не будет отображаться для тех приложений, которые слушают трансляции.
void agk::SetNetworkNoMoreClients( UINT iNetID )
iNetID - Идентификатор сети для изменения.
Присваивает локальное значение одному из 5 слотов данных в клиенте, которые можно использовать для отслеживания элементов, принадлежащих этому клиенту. Например, если вы создаете спрайт для представления клиента в вашей игре, вы можете назначить идентификатор спрайта одному из этих слотов данных, чтобы при просмотре списка клиентов вы могли определить, какой спрайт вы использовали для каждого клиента. Это также позволяет очистить спрайт, если обнаружится, что клиент отключился. Это значение является полностью локальным и не передается по сети.
void agk::SetNetworkClientUserData( UINT iNetID, UINT client, UINT index, int value )
iNetID - Идентификатор сети для хранения значения.
client - Идентификатор клиента в сети для хранения значения.
index - Индекс (от 0 до 4) устанавливаемого слота данных.
value - Целочисленное значение для установки.
Устанавливает, как часто сеть отправляет обновления и проверяет наличие обновлений переменных от других клиентов в миллисекундах. Чем ниже это значение, тем чаще этот клиент будет отправлять и получать обновления, что означает, что общие переменные с большей вероятностью будут обновляться, но это увеличит сетевой трафик. В случае соединений через Интернет это особенно важно, так как большое количество переменных, которые часто обновляются, означает, что может не хватить пропускной способности. Значение по умолчанию составляет 15 миллисекунд, что переводится примерно в 67 обновлений каждую секунду, чтобы точно соответствовать частоте кадров игры 60 кадров в секунду. Если вы обновляете большое количество переменных через интернет-соединение, рекомендуется увеличить это значение до 50 миллисекунд, что приведет к 20 обновлениям в секунду или более.
void agk::SetNetworkLatency( UINT iNetID, UINT latency )
iNetID - Идентификатор сети, от которой требуется отключиться.
latency - Задержка использования в миллисекундах
Перезапуск прослушивания новых клиентских подключений, применимый только в том случае, если вы размещаете сеть. Также перезапускается вещание сети в локальную сеть, так что она будет отображаться для тех приложений, которые слушают трансляции. Это нужно сделать только в том случае, если вы ранее вызывали SetNetworkNoMoreClients и теперь хотите снова разрешить соединения.
void agk::SetNetworkAllowClients( UINT iNetID )
iNetID - Идентификатор сети для изменения.
Отправит строку на удаленное соединение. Обратите внимание, что данные отправляются не сразу, для их отправки необходимо вызвать FlushSocket. Если вы отправляете строку в приложение, не являющееся AGK, то строка строится из значения длины 4 байта, за которым следует X байт строковых данных, где X-значение длины. Строка не завершается нулем. Возвращает 1, если строка была успешно записана в буфер, 0, если сокет отключен.
int agk::SendSocketString( UINT socketID, const char *value )
socketID - Идентификатор сокета для записи
value - Значение для отправки
Отправляет сетевое сообщение, созданное с помощью CreateNetworkMessage, на указанный удаленный IP-адрес и порт. Вы должны указать прослушиватель UDP для использования в качестве исходного IP-адреса и порта. Эта функция удалит указанный идентификатор сообщения.
void agk::SendUDPNetworkMessage( UINT listenerID, UINT messageID, const char* toIP, int toPort )
listenerID - Идентификатор прослушивателя для использования в качестве исходного IP-адреса и порта
messageID - Идентификатор отправляемого сетевого сообщения
toIP - IP-адрес для отправки сообщения
toPort - Порт для отправки сообщения
Отправит 4-байтовое целое число на удаленное соединение. Обратите внимание, что данные отправляются не сразу, для их отправки необходимо вызвать FlushSocket. Возвращает 1, если целое число было успешно записано в буфер, 0, если сокет отключен.
int agk::SendSocketInteger( UINT socketID, int value )
socketID - Идентификатор сокета для записи
value - Значение для отправки
Отправит 4-байтовый float на удаленное соединение. Обратите внимание, что данные отправляются не сразу, для их отправки необходимо вызвать FlushSocket. Возвращает 1, если float был успешно записан в буфер, 0, если сокет отключен.
int agk::SendSocketFloat( UINT socketID, float value )
socketID - Идентификатор сокета для записи
value - Значение для отправки
Отправит один байт в диапазоне от -128 до 127 на удаленное соединение. Обратите внимание, что данные отправляются не сразу, для их отправки необходимо вызвать FlushSocket. Возвращает 1, если байт был успешно записан в буфер, 0, если сокет отключен.
int agk::SendSocketByte( UINT socketID, int value )
socketID - Идентификатор сокета для записи
value - Значение для отправки
Отправляет созданное сетевое сообщение данному клиенту в данной сети. Используйте идентификатор клиента 0 для отправки всем подключенным клиентам (кроме отправителя), в противном случае, если идентификатор клиента не существует, будет сгенерирована ошибка. Эта функция удалит указанный идентификатор сообщения.
void agk::SendNetworkMessage( UINT iNetID, UINT toClient, UINT iMsgID )
iNetID - Идентификатор сети, по которой будет отправлено сообщение.
toClient - Идентификатор клиента, которому нужно отправить сообщение, 0 для отправки всем.
iMsgID - Идентификатор отправляемого сообщения.
Пинает клиента из сети. Это происходит не сразу, и клиент может оставаться в течение нескольких кадров, прежде чем его окончательно пнут. Клиент отключится обычным способом, вы должны проверить GetNetworkClientDisconnected, чтобы обнаружить, когда клиент был выгнан, а затем вызвать DeleteNetworkClient, чтобы окончательно избавиться от него.
void agk::KickNetworkClient( UINT iNetID, UINT client )
iNetID - Идентификатор сети.
client - идентификатор клиента, которого нужно пнуть.
Присоединяется к сети 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 - Имя сети для подключения.
Проверяет, что сеть активна, в случае присоединения к сети это вернет 0, если соединение не удалось или по какой-то причине соединение с сервером разорвалось. Для хостера эта функция вернет 0, если ему не удалось прослушать указанный порт для клиентов, в противном случае она навсегда вернет 1, так как не перестанет управлять никакими подключенными клиентами, даже если все отключатся.
UINT agk::IsNetworkActive( UINT iNetID )
iNetID - Идентификатор сети для проверки.
Создает сеть 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.
Проверяет прослушиватель UDP на наличие любых широковещательных передач. Возвращает 0, если ничего не было получено. Возвращает идентификатор сообщения если что-то было получено, вы можете получить доступ к содержимому этого сообщения с помощью команд сетевого сообщения. Сообщение должно быть удалено, когда вы закончите чтение.
UINT agk::GetUDPNetworkMessage( UINT listenerID )
listenerID - Идентификатор прослушивателя для проверки сообщений
Будет считывать строку из соединения сокета и возвращать ее. Если вы отправляете строку из источника, отличного от AGK, то строка должна начинаться со значения длины 4 байта, за которым следует X байт строковых данных, где X-значение длины. Строка не должна заканчиваться null. Если существует менее 4 байт данных, ожидающих чтения, то эта команда немедленно вернется и вернет пустую строку. Вы можете проверить, сколько данных нужно прочитать, используя GetSocketBytesAvailable. Если есть 4 или более байтов, ожидающих чтения, то эта команда будет ждать, пока вся строка не будет получена, прежде чем вернуться.
char* agk::GetSocketString( UINT socketID )
socketID - Идентификатор сокета для чтения
Возвращает IP-адрес компьютера или устройства на другом конце соединения. Это может быть адрес IPv4 или IPv6.
char* agk::GetSocketRemoteIP( UINT socketID )
socketID - Идентификатор сокета для проверки
Возвращает идентификатор сокета, подключенного к вашему устройству. Прослушиватель будет принимать соединения в фоновом режиме и добавлять их в очередь, эта команда удаляет один из сокетов из очереди и передает вам управление им. Если вы не хотите принимать соединение, вы должны удалить его с помощью DeleteSocket. Вы должны вызвать GetSocketListenerConnection в цикле до тех пор, пока он не вернет 0, чтобы убедиться, что вы справились со всеми подключенными сокетами. Вы можете узнать IP-адрес устройства, которое подключилось к вам, вызвав GetSocketRemoteIP на возвращенном сокете.
UINT agk::GetSocketListenerConnection( UINT listenerID )
listenerID - Идентификатор прослушивателя для проверки
Будет считывать 4-байтовый float из соединения сокета и возвращать его. Если существует менее 4 байт данных, ожидающих чтения, то эта команда немедленно вернется и вернет 0. Вы можете проверить, сколько данных нужно прочитать, используя GetSocketBytesAvailable.
float agk::GetSocketFloat( UINT socketID )
socketID - Идентификатор сокета для чтения
Возвращает 1, если указанный сокет подключен, и 0, если он все еще находится в процессе подключения. Если сокет будет отключен или не сможет подключиться, то это вернет -1.
int agk::GetSocketConnected( UINT socketID )
socketID - Идентификатор сокета для проверки
Возвращает 1, если указанный сокет существует, и 0 в противном случае.
int agk::GetSocketExists( UINT socketID )
socketID - Идентификатор сокета для проверки
Возвращает количество байтов, доступных для чтения. Если это возвращает 0, то команды чтения, такие как GetSocketInteger, не будут возвращать никаких данных.
int agk::GetSocketBytesAvailable( UINT socketID )
socketID - Идентификатор сокета для проверки
Будет считывать 4-байтовое целое число из соединения сокета и возвращать его. Если существует менее 4 байт данных, ожидающих чтения, то эта команда немедленно вернется и вернет 0. Вы можете проверить, сколько данных нужно прочитать, используя GetSocketBytesAvailable.
int agk::GetSocketInteger( UINT socketID )
socketID - Идентификатор сокета для чтения
Будет считывать один байт из сокета соединения и возвращать его. Если нет данных, ожидающих чтения, то эта команда немедленно вернется и вернет 0. Вы можете проверить, сколько данных нужно прочитать, используя GetSocketBytesAvailable.
int agk::GetSocketByte( UINT socketID )
socketID - Идентификатор сокета для чтения
Возвращает IP-адрес, используемый сервером. Эта команда работает только на клиентах, так как сервер может получить свой собственный IP-адрес с помощью GetDeviceIP и GetDeviceIPv6.
char* agk::GetNetworkServerIP( uint32_t iNetID )
iNetID - Идентификатор сети для проверки.
Возвращает идентификатор клиента клиента хоста. Это полезно, если вы используете сервер для обработки переменных настройки игры, таких как размер доски, длина игры и т. Д., поскольку только хост - клиент должен иметь копию этих переменных.
UINT agk::GetNetworkServerID( UINT iNetID )
iNetID - Идентификатор сети для проверки.
Возвращает количество клиентов, подключенных к указанной сети. Хост считается клиентом, как и локальный клиент. Это означает, что в подключенной сети должно быть не менее 2 клиентов. Хост, ожидающий клиентов, возвращает 1, если он находится сам по себе. Клиент, пытающийся подключиться, возвращает 0 до тех пор, пока он не подключится и хост не примет клиента, предоставив ему уникальный идентификатор, затем он должен вернуть 2.
UINT agk::GetNetworkNumClients( UINT iNetID )
iNetID - Идентификатор сети для проверки.
Возвращает идентификатор клиента следующего клиента в списке клиентов. Используйте эту функцию, чтобы продолжить просмотр списка клиентов, запущенных с помощью GetNetworkFirstClient. Очень важно, чтобы эта команда вызывалась до тех пор, пока она не вернет 0, так как фоновый сетевой код не может продолжаться до тех пор, пока он не узнает, что вы закончили работу со списком клиентов. Локальный клиент также будет возвращен в какой-то момент, который можно обнаружить, сравнив возвращаемый идентификатор с GetNetworkMyClientID. Хост-клиент также будет возвращен в какой-то момент, который можно обнаружить, сравнив возвращаемый идентификатор с GetNetworkServerID.
UINT agk::GetNetworkNextClient( UINT iNetID )
iNetID - Идентификатор сети для проверки.
Каждому клиенту при подключении хост присваивает уникальный идентификатор. Эта функция возвращает идентификатор, который вам был назначен. Хост также присваивает себе идентификатор, который можно найти с помощью GetNetworkServerID.
UINT agk::GetNetworkMyClientID( UINT iNetID )
iNetID - Идентификатор сети для проверки.
Получает одну строку из сообщения и перемещает указатель сообщения на следующий элемент сообщения. Сообщения должны создаваться и считываться в соответствии с известными форматами, например string, int, string, поскольку у получателя нет непосредственного способа узнать формат сообщения. Вы можете использовать начальное целое число для указания идентификатора типа сообщения, который можно использовать для идентификации формата сообщения.
char* agk::GetNetworkMessageString( UINT iMsgID )
iMsgID - Идентификатор сообщения для чтения.
Получает одно целое число из сообщения и перемещает указатель сообщения к следующему элементу сообщения. Сообщения должны создаваться и считываться в соответствии с известными форматами, например string, int, string, поскольку у получателя нет непосредственного способа узнать формат сообщения. Вы можете использовать начальное целое число для указания идентификатора типа сообщения, который можно использовать для идентификации формата сообщения.
int agk::GetNetworkMessageInteger( UINT iMsgID )
iMsgID - Идентификатор сообщения для чтения.
Возвращает IP-адрес, отправивший это сообщение. Только применительно к сообщениям, полученным от UDP и широковещательных прослушивателей, сетевые сообщения будут возвращать пустую строку для этой функции. Он также вернет пустую строку для сообщений, созданных с помощью CreateNetworkMessage. Это может быть адрес IPv4 или IPv6.
char* agk::GetNetworkMessageFromIP( UINT iMsgID )
iMsgID - Идентификатор сообщения для чтения.
Возвращает идентификатор клиента, отправившего это сообщение. Применимо только к сообщениям, полученным из сетей, широковещательный прослушиватель и UDP-сообщения вернут 0 для этой функции. Он также вернет 0 для сообщений, созданных с помощью CreateNetworkMessage.
UINT agk::GetNetworkMessageFromClient( UINT iMsgID )
iMsgID - Идентификатор сообщения для чтения.
Получает один байт без знака из сообщения и перемещает указатель сообщения на следующий элемент сообщения. Сообщения должны создаваться и считываться в соответствии с известными форматами, например string, int, string, поскольку у получателя нет непосредственного способа узнать формат сообщения. Вы можете использовать начальное целое число для указания идентификатора типа сообщения, который можно использовать для идентификации формата сообщения.
UINT agk::GetNetworkMessageByte( UINT iMsgID )
iMsgID - Идентификатор сообщения для чтения.
Проверьте сеть на наличие любых сообщений, отправленных этому клиенту. Если ничего не найдено, он возвращает 0. Если сообщение найдено, оно возвращает идентификатор сообщения, который вы можете использовать для его чтения. Вы должны удалить сообщение с помощью DeleteNetworkMessage, когда закончите его читать. Вы должны продолжать вызывать GetNetworkMessage до тех пор, пока он не вернет 0, чтобы убедиться, что вы получили все сообщения. Вы можете использовать команды чтения сообщений, чтобы узнать, какой идентификатор клиента отправил сообщение.
UINT agk::GetNetworkMessage( UINT iNetID )
iNetID - Идентификатор сети для проверки сообщений.
Возвращает 1, если сеть существует с заданным идентификатором, в противном случае она возвращает 0.
int agk::GetNetworkExists( UINT iNetID )
iNetID - Идентификатор сети для проверки
Возвращает идентификатор клиента первого клиента в списке клиентов. Используйте эту функцию, чтобы начать просмотр списка клиентов и продолжить работу с GetNetworkNextClient до тех пор, пока он не вернет 0. Очень важно, чтобы после вызова этой команды GetNetworkNextClient вызывался до тех пор, пока не вернет 0, так как фоновый сетевой код не может продолжать работу до тех пор, пока не будет известно, что вы закончили работу со списком клиентов. Локальный клиент также будет возвращен в какой-то момент, который можно обнаружить, сравнив возвращаемый идентификатор с GetNetworkMyClientID. Хост-клиент также будет возвращен в какой-то момент, который можно обнаружить, сравнив возвращаемый идентификатор с GetNetworkServerID.
UINT agk::GetNetworkFirstClient( UINT iNetID )
iNetID - Идентификатор сети для проверки.
Считывает один из локальных слотов данных, назначенных клиентскому набору, с помощью SetNetworkClientUserData.
int agk::GetNetworkClientUserData( UINT iNetID, UINT client, UINT index )
iNetID - Идентификатор сети, из которой будет получено значение.
client - Идентификатор клиента в сети, от которого требуется получить значение.
index - Индекс (0-4) считываемого слота данных.
Возвращает пинг между данным клиентом и хостом. Чтобы получить общее время передачи данных от одного клиента к другому, вы должны сложить два времени пинга для обоих клиентов вместе, поскольку все данные проходят через хост. Если вы используете идентификатор клиента хоста, он вернет 0, так как хост не имеет пинга для себя. Возвращаемое значение выражается в секундах как значение с плавающей запятой.
float agk::GetNetworkClientPing( UINT iNetID, UINT client )
iNetID - Идентификатор сети для проверки.
client - Идентификатор клиента для проверки.
Возвращает исходный порт, который был использован этим сообщением. Только применительно к сообщениям, полученным от UDP и широковещательных прослушивателей, сетевые сообщения вернут 0 для этой функции. Он также вернет 0 для сообщений, созданных с помощью CreateNetworkMessage. Это будет в диапазоне от 0 до 65535.
int agk::GetNetworkMessageFromPort( UINT iMsgID )
iMsgID - Идентификатор сообщения для чтения.
Возвращает IP-адрес, используемый указанным клиентом. Эта команда работает только на сервере, так как клиенты не подключаются непосредственно друг к другу
char* agk::GetNetworkClientIP( uint32_t iNetID, uint32_t client )
iNetID - Идентификатор сети для проверки.
client - идентификатор клиента для проверки.
Получает один float из сообщения и перемещает указатель сообщения к следующему элементу сообщения. Сообщения должны создаваться и считываться в соответствии с известными форматами, например string, int, string, поскольку у получателя нет непосредственного способа узнать формат сообщения. Вы можете использовать начальное целое число для указания идентификатора типа сообщения, который можно использовать для идентификации формата сообщения.
float agk::GetNetworkMessageFloat( UINT iMsgID )
iMsgID - Идентификатор сообщения для чтения.
Получает копию переменной float удаленного клиента по имени. Также может быть использован для собственных переменных клиента, если ClientID равен GetNetworkMyClientID. Если переменная была установлена как переменная сброса, она вернется к 0 после чтения, это не повлияет на способность других клиентов считывать исходное значение. Каждый из них сбросит свою собственную копию. Если указанный клиент не установил переменную с заданным именем, то возвращается значение 0.
float agk::GetNetworkClientFloat( UINT iNetID, UINT client, const char *name )
iNetID - Идентификатор сети для проверки.
client - Идентификатор клиента для проверки.
name - Имя возвращаемой переменной.
Проверяет, отключился ли указанный клиент. Отключенные клиенты не удаляются автоматически из списка клиентов, что позволяет вам правильно обрабатывать их очистку. Как только вы справитесь с этим клиентом, вы должны удалить его из списка клиентов, вызвав DeleteNetworkClient. Клиент может сохраняться в течение некоторого времени, пока фоновый сетевой код не начнет фактически удалять его, поэтому будьте готовы к тому, что этот клиент будет болтаться вокруг в течение нескольких кадров, объявляя, что он отключен, и убедитесь, что вы очистите его только один раз. Вы можете обнаружить это, установив одно из значений SetNetworkClientUserData, чтобы уведомить себя о том, что оно было обработано.
UINT agk::GetNetworkClientDisconnected( UINT iNetID, UINT client )
iNetID - Идентификатор сети для проверки.
client - идентификатор клиента для проверки.
Возвращает имя, которое клиент использовал для идентификации себя при подключении к хосту.
char* agk::GetNetworkClientName( UINT iNetID, UINT client )
iNetID - Идентификатор сети для проверки.
client - идентификатор клиента для проверки.
Получает копию целочисленной переменной удаленного клиента по имени. Также может быть использован для собственных переменных клиента, если ClientID равен GetNetworkMyClientID. Если переменная была установлена как переменная сброса, она вернется к 0 после чтения, это не повлияет на способность других клиентов считывать исходное значение. Каждый из них сбросит свою собственную копию. Если указанный клиент не установил переменную с заданным именем, то возвращается значение 0.
int agk::GetNetworkClientInteger( UINT iNetID, UINT client, const char *name )
iNetID - Идентификатор сети для проверки.
client - Идентификатор клиента для проверки.
name - Имя возвращаемой переменной.
Возвращает IPv6-адрес текущего устройства, который может быть использован другими устройствами для подключения к этому устройству. Чтобы получить IPv4-адрес, используйте вместо него GetDeviceIP.
char* agk::GetDeviceIPv6()
Возвращает IPv4-адрес текущего устройства, который может быть использован другими устройствами для подключения к этому устройству. Чтобы получить IPv6-адрес, используйте вместо него GetDeviceIPv6.
char* agk::GetDeviceIP()
Проверяет прослушиватель вещания на наличие любых передач. Возвращает 0, если ничего не было получено. Возвращает идентификатор сообщения если что-то было получено, вы можете получить доступ к содержимому этого сообщения с помощью команд сетевого сообщения. Сообщение должно быть удалено, когда вы закончите чтение.
UINT agk::GetBroadcastMessage( UINT iID )
iID - Идентификатор широковещательного слушателя для проверки.
Немедленно отправляет все ожидающие данные на удаленный хост. Если вы не вызовете этот вызов, то данные будут вечно ждать в буфере, пока вы не запишете в сокет более 1400 байт, после чего он автоматически будет сброшен. Каждый раз, когда вы вызываете эту команду, будет отправлен новый пакет, поэтому при отправке нескольких значений вы не должны вызывать его после каждого значения, так как это приведет к потере пропускной способности сети. Вы должны записать все значения, а затем сбросить их, чтобы они были отправлены вместе. Если нет данных, ожидающих отправки, эта команда ничего не делает. Возвращает 1, если сокет был успешно сброшен, 0, если сокет отключен.
int agk::FlushSocket( UINT socketID )
socketID - Идентификатор сокета для проверки
Останавливает прослушиватель сокета от получения соединений и освобождает идентификатор для повторного использования. Если какие-либо соединения все еще находятся в очереди и еще не собраны с помощью GetSocketListenerConnection, то они будут закрыты и удалены.
void agk::DeleteSocketListener( UINT listenerID )
listenerID - Идентификатор прослушивателя для проверки
Удаляет идентификатор сокета, чтобы его можно было использовать снова. Если розетка в данный момент подключена, то сначала соединение закрывается.
void agk::DeleteSocket( UINT socketID )
socketID - Идентификатор сокета для удаления
Удаляет указанный UDP-listenere и освобождает порт, который он использовал.
void agk::DeleteUDPListener( UINT listenerID )
listenerID - Идентификатор прослушивателя для удаления
Удаляет сетевое сообщение, это должно быть вызвано для сообщений, полученных от сетевых устройств, и сообщений, которые не были отправлены на сетевое устройство (если код решает отказаться от отправки сообщения). Сообщения, которые были созданы и отправлены, будут обработаны и удалены сетевым кодом и не должны быть удалены с помощью этой команды.
void agk::DeleteNetworkMessage( UINT iMsgID )
iMsgID - Идентификатор сообщения для чтения.
Удаляет отключенный клиент из списка клиентов. Если эта функция вызывается на клиенте, который не отключен, она вызовет ошибку и не повлияет на клиента. Не удаляет клиент сразу, фоновый код может занять несколько кадров, чтобы обойти его удаление. Вызов этой команды несколько раз на отключенном клиенте не должен вызывать проблем.
void agk::DeleteNetworkClient( UINT iNetID, UINT client )
iNetID - Идентификатор сети для проверки.
client - идентификатор клиента для удаления.
Удаляет широковещательный прослушиватель и освобождает порт для прослушивания на нем чего-то другого.
void agk::DeleteBroadcastListener( UINT iID )
iID - Идентификатор прослушивателя широковещательной передачи для удаления.
Создает прослушиватель 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 - Локальный порт для привязки.
Создает прослушиватель сокетов, который прослушивает на указанном порту входящие соединения сокетов. Когда соединение происходит, оно будет удерживаться в очереди до тех пор, пока вы не получите его с помощью 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
Создает сетевое сообщение, которое может быть отправлено на другое сетевое устройство. Он возвращает идентификатор, который можно использовать для взаимодействия с сообщением. Сообщения, созданные таким образом, могут быть только добавлены, а не прочитаны. После передачи в сеть идентификатор сообщения уничтожается и обрабатывается фоновым сетевым кодом.
UINT agk::CreateNetworkMessage( )
Широковещательные передачи являются специальными сетевыми коммуникациями, поскольку они не используют адрес назначения и вместо этого принимаются всеми устройствами в сети. Широковещательные пакеты не пересылаются маршрутизаторами, поэтому могут использоваться только в локальной сети или, точнее, в локальной подсети. Это может быть полезно для обнаружения устройств, поскольку одно устройство может отправить широковещательный пакет, содержащий его 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.
Создает сетевое сообщение, которое является копией существующего сообщения. Он возвращает идентификатор, который можно использовать для взаимодействия с сообщением. Сообщения, созданные таким образом, могут быть прочитаны с самого начала или добавлены, и источником сообщения может быть либо созданное вами сообщение, либо полученное вами. Новое сообщение становится полностью независимым от исходного сообщения и может быть отправлено с помощью SendNetworkMessage, не затрагивая оригинал.
UINT agk::CopyNetworkMessage( UINT iFromMsgID )
iFromMsgID - Идентификатор сообщения для копирования
Создает сокет и пытается подключиться к указанному 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 - Время в миллисекундах ожидания перед прерыванием попытки подключения
Отключается от указанной сети. Идентификатор освобождается и больше не может использоваться в других сетевых командах.
void agk::CloseNetwork( UINT iNetID )
iNetID - Идентификатор сети, от которой требуется отключиться.
Добавляет строку к ранее созданному сетевому сообщению. Это может быть вызвано для сообщений, созданных CreateNetworkMessage, или для сообщений, полученных из сети.
void agk::AddNetworkMessageString( UINT iMsgID, const char *value )
iMsgID - Идентификатор сообщения для изменения.
value - Строка для добавления в сообщение.
Добавляет float к ранее созданному сетевому сообщению. Это может быть вызвано для сообщений, созданных CreateNetworkMessage, или для сообщений, полученных из сети.
void agk::AddNetworkMessageFloat( UINT iMsgID, float value )
iMsgID - Идентификатор сообщения для изменения.
value - Значение, которое нужно добавить к сообщению.
Добавляет байт без знака к ранее созданному сетевому сообщению. Это может быть вызвано для сообщений, созданных CreateNetworkMessage, или для сообщений, полученных из сети.
void agk::AddNetworkMessageByte( UINT iMsgID, UINT value )
iMsgID - Идентификатор сообщения для изменения.
value - Значение, которое нужно добавить к сообщению.
Добавляет целое число к ранее созданному сетевому сообщению. Это может быть вызвано для сообщений, созданных CreateNetworkMessage, или для сообщений, полученных из сети.
void agk::AddNetworkMessageInteger( UINT iMsgID, int value )
iMsgID - Идентификатор сообщения для изменения.
value - Значение, которое нужно добавить к сообщению.