Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
  • Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.

Socket

Archange

Мастер
Данный плагин позволяет вам использовать TCP\UDP сокеты. Каждый сокет принимает данные в отдельном потоке, это означает что сервер не будет зависать. После того как вы уничтожили сокет, поток будет остановлен.

Плагин может применяться во многих полезных идеях, вот некоторые из них:
Код:
- 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
​
 
Сверху Снизу