Данный плагин позволяет вам использовать TCP\UDP сокеты. Каждый сокет принимает данные в отдельном потоке, это означает что сервер не будет зависать. После того как вы уничтожили сокет, поток будет остановлен.
Плагин может применяться во многих полезных идеях, вот некоторые из них:
- IRC echo бот
- Новая функция для RCON панели - чат на основе TCP-сокет сервера, схожий с GUIRCON
- Загрузка данных сервера через UDP протокол
- Работа с PHP-скриптами: логи/прием данных
Функции:
PHP код:
native Socket:socket_create(pType:TCP); // UDP и TCP
native socket_bind(Socket:id, ip[]); // UDP и TCP
native socket_connect(Socket:id, host[], port); // UDP и TCP
native socket_listen(Socket:id, port); // UDP и TCP
native socket_stop_listen(Socket:id); // UDP и TCP
native socket_destroy(Socket:id); // UDP и TCP
native socket_send(Socket:id, data[], len); // UDP и TCP
native is_socket_valid(Socket:id); // UDP и TCP
native socket_set_max_connections(Socket:id, max_remote_clients); // Только TCP
native socket_close_remote_client(Socket:id, remote_clientid); // Только TCP
native socket_sendto_remote_client(Socket:id, remote_clientid, data[]); // Только TCP
native socket_remote_client_connected(Socket:id, remote_clientid); // Только TCP
native get_remote_client_ip(Socket:id, remote_clientid, ip[]); // Только TCP
Коллбэки:
PHP код:
// Для клиента и сервера ( UDP протокол )
forward onUDPReceiveData(Socket:id, data[], data_len, remote_client_ip[], remote_client_port);
// Только для клиента ( TCP протокол )
forward onSocketAnswer(Socket:id, data[], data_len); // вызывается только когда подключены ( socket_connect() ), сервер отсылает данные
forward onSocketClose(Socket:id);
// Только для сервера ( TCP протокол )
forward onSocketReceiveData(Socket:id, remote_clientid, data[], data_len); // вызывается когда от клиента поступают данные
forward onSocketRemoteConnect(Socket:id, remote_client[], remote_clientid); // вызывается когда клиент подключается к нашему сокет серверу
forward onSocketRemoteDisconnect(Socket:id, remote_clientid); // вызывается когда клиент отключается от нашего сокет сервера
Пример:
PHP код:
new Socket:sock = socket_create(TCP);
if(is_socket_valid(sock)) {
socket_connect(sock, "foco.us.irc.tl", 6667); // Подключаемся
socket_send(sock, "NICK TestBot\r\n"); // Устанавливаем никнейм
socket_send(sock, "USER TestBot - - :TestBot\r\n"); // Устанавливаем юсеру никнейм бота
socket_send(sock, "MODE TestBot +B\r\n"); // Сообщаем серверу что это бот
socket_send(sock, "JOIN #test_channel\r\n"); // Присоединяем его к нашему каналу
}
// теперь этот коллбэк будет получать все входящие данные
public onSocketAnswer(Socket:id, data[])
{
}
Ссылки:
Windows: http://files.g-stylezzz.com/socket_p...01b/socket.dll
Linux: http://files.g-stylezzz.com/socket_p...v01b/socket.so
socket.inc: http://files.g-stylezzz.com/socket_plugin/socket.inc
Source (0.1b): http://files.g-stylezzz.com/socket_p...t_v01b_src.rar
v0.2a Source: (SSL version):
Source browser: https://github.com/pBlueG/Socket
Автор: BlueG