AMX Mod X: Sockets и GeoIP
1 месяц, 2 недели назад | 0 ОтветыТема закреплена. Технический разбор — в первом сообщении. Вопросы и обсуждение — в ответах ниже.
9. Sockets и GeoIP
Оба модуля в пакете base.
Sockets
socket_change— Функция проверяет изменения в буфере
The Sockets Module sockets.inc
Функция необходима для проверки получены данные от запроса или нет (в течении определенного времени). То есть функция проверяет изменение в буфере относительно последней проверки. Грубо говоря так: 1) Есть пустой буфер 2) Проверяем его — в буфер было что то (допустим 1) помещено в результате запроса, функция вернет что были изменения. 3) Запускаем снова и теперь ни чего не приходило и в буфере по прежнему осталась 1, функция вернет что изменений не было.
Инфо из sockets.inc:
/* This function will return true if the state (buffer content) have changed within the last recieve or
* the timeout, where timeout is a value in µSeconds, (1 sec =1000000 µsec).
* Use to check if new data is in your socket. */
native socket_change(_socket, _timeout=100000);
socket_send2 Функция отправки запроса на удаленный сервер с возможностью отправки пустых байтов
The Sockets Module sockets.inc Функция socket_send2 отличается от socket_send только тем, что может отправлять запросы с нулевыми/пустыми байтами ( честно говоря я в этом не силен)
Инфо из sockets.inc:
/* Same as socket_send but Data can contain null bytes */
native socket_send2(_socket, const _data[], _length);
socket_send Функция отправляет данные в сокет (запрос)
The Sockets Module sockets.inc
Инфо из sockets.inc:
/* Sends data to the Socket */
native socket_send(_socket, const _data[], _length);
socket_recv Функция получает данные и записывает в массив(строку)
The Sockets Module sockets.inc Функция для получения результата запроса и записи его в массив.
Инфо из sockets.inc:
/* Recieves Data to string with the given length */
native socket_recv(_socket, _data[], _length);
socket_close Функция закрывает соединение с удаленным хостом
The Sockets Module sockets.inc Мы же не в лифте все родились, и надо закрывать за собой двери 😉
Инфо из sockets.inc:
/* Closes a Socket */
native socket_close(_socket);
socket_open Функция открывает соединение с удаленным хостом
The Sockets Module sockets.inc Функция socket_open открывает соединение с нужным сервером по определенному порту и протоколу.
Инфо из socets.inc:
/* Opens a new connection to hostname:port via protocol (either SOCKET_TCP or SOCKET_UDP),
* returns a socket (positive) or negative or zero on error.
* States of error:
* 0 - no error
* 1 - error while creating socket
* 2 - couldn't resolve hostname
* 3 - couldn't connect to given hostname:port
*/
native socket_open(const _hostname[], _port, _protocol = SOCKET_TCP, &_error);
GeoIP
geoip_code3— Функция возвращает трех буквенну абривеатуру страны игрока.GeoIP— Функция вернет страну игрока по его ip адресу в виде обозначения из трех букв, например для России будет Rus
Инфо из geoip.inc:
/**
* @deprecated
* Lookup the three character country code for a given IP address.
* @note This native will overflow the buffer by one cell on an unknown ip lookup!
* @note Use geoip_code3_ex instead!
* @param ip The IP address to lookup.
* @param result The result buffer.
*/
native geoip_code3(const ip[], result[4]);
geoip_code2 — Функция возвращает в двух символах обозначение страны игрока GeoIP Не всегда удобно иметь дело с полным названием страны игрока, например если эти данные используются в статистике, на много удобнее использовать какую то аббревиатуру страны или двузначный общепринятый код. О нас разработчики позаботились заранее и дали нам инструменты которые с легкостью это выполнят без лишней для нас мороки.Инфо из geoip.inc:
/**
* @deprecated
* Lookup the two character country code for a given IP address.
* @note This native will overflow the buffer by one cell on an unknown ip lookup!
* @note Use geoip_code2_ex instead!
* @param ip The IP address to lookup.
* @param result The result buffer.
*/
native geoip_code2(const ip[], ccode[3]);
geoip_country — Функция получает из какой страны игрок. (Полное название страны) GeoIP Во многих информерах при коннекте игрока к серверу выводится информация о его стране, с помощью функции geoip_country, вы сможете сами сделать точно такой же вывод.Инфо из geoip.in:
/**
* Lookup the full country name for the given IP address. Sets the buffer to "error" on
* an unsuccessful lookup.
* @param ip The IP address to lookup.
* @param result The result of the geoip lookup.
* @param len The maximum length of the result buffer.
*/
native geoip_country(const ip[], result[], len=45);
- Войдите, чтобы ответить в этой теме.