Archange
Мастер
Данный плагин позволяет вам использовать TCP\UDP сокеты. Каждый сокет принимает данные в отдельном потоке, это означает что сервер не будет зависать. После того как вы уничтожили сокет, поток будет остановлен.
Плагин может применяться во многих полезных идеях, вот некоторые из них:
Функции:
Коллбэеки:
Пример:
Ссылки:
Windows:
Linux:
socket.inc:
Примеры работ:
Исходник (0.1b):
Исходник (v0.2a): (SSL версии):
Проект на GitHub'e:
Запакованные .zip .tar.gz:
Плагин может применяться во многих полезных идеях, вот некоторые из них:
Код:
- IRC echo бот
- Новая функция для RCON панели - чат на основе TCP-сокет сервера, схожий с GUIRCON
- Загрузка данных сервера через UDP протокол
- Работа с PHP-скриптами: логи/прием данных
Код:
[COLOR="#0000FF"]native [/COLOR]Socket:socket_create(pType:TCP);[COLOR="#008000"] // UDP и TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] socket_bind(Socket:id, ip[]);[COLOR="#008000"] // UDP и TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] socket_connect(Socket:id, host[], port); [COLOR="#008000"] // UDP и TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] socket_listen(Socket:id, port); [COLOR="#008000"] // UDP и TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] socket_stop_listen(Socket:id);[COLOR="#008000"] // UDP и TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] socket_destroy(Socket:id);[COLOR="#008000"] // UDP и TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] socket_send(Socket:id, data[], len);[COLOR="#008000"] // UDP и TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] is_socket_valid(Socket:id); [COLOR="#008000"] // UDP и TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] socket_set_max_connections(Socket:id, max_remote_clients);[COLOR="#008000"] // Только TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] socket_close_remote_client(Socket:id, remote_clientid); [COLOR="#008000"] // Только TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] socket_sendto_remote_client(Socket:id, remote_clientid, data[]); [COLOR="#008000"] // Только TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] socket_remote_client_connected(Socket:id, remote_clientid);[COLOR="#008000"] // Только TCP[/COLOR]
[COLOR="#0000FF"]native[/COLOR] get_remote_client_ip(Socket:id, remote_clientid, ip[]);[COLOR="#008000"] // Только TCP[/COLOR]
Код:
[COLOR="#008000"]// Для клиента и сервера ( UDP протокол )[/COLOR]
[COLOR="#0000FF"]forward[/COLOR] onUDPReceiveData(Socket:id, data[], data_len, remote_client_ip[], remote_client_port);
[COLOR="#008000"]// Только для клиента ( TCP протокол )[/COLOR]
[COLOR="#0000FF"]forward[/COLOR] onSocketAnswer(Socket:id, data[], data_len); [COLOR="#008000"]// вызывается только когда подключены ( socket_connect() ), сервер отсылает данные[/COLOR]
[COLOR="#0000FF"]forward[/COLOR] onSocketClose(Socket:id);
[COLOR="#008000"]// Только для сервера ( TCP протокол )[/COLOR]
[COLOR="#0000FF"]forward[/COLOR] onSocketReceiveData(Socket:id, remote_clientid, data[], data_len); [COLOR="#008000"]// вызывается когда от клиента поступают данные[/COLOR]
[COLOR="#0000FF"]forward[/COLOR] onSocketRemoteConnect(Socket:id, remote_client[], remote_clientid); [COLOR="#008000"]// вызывается когда клиент подключается к нашему сокет серверу[/COLOR]
[COLOR="#0000FF"]forward[/COLOR] onSocketRemoteDisconnect(Socket:id, remote_clientid);[COLOR="#008000"] // вызывается когда клиент отключается от нашего сокет сервера[/COLOR]
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:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Linux:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
socket.inc:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Примеры работ:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
,
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
,
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
,
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Исходник (0.1b):
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Исходник (v0.2a): (SSL версии):
Проект на GitHub'e:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Запакованные .zip .tar.gz:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Автор: BlueG
Автор перевода: georJik
Автор перевода: georJik
