Ребята привет, нужен простой скрипт, задача реально простая, даже есть пример скрипта, у меня он просто не хочет работать, нужно слушать указаный порт и когда будут входящие данные, мне нужно их поместить в переменную для обработки, а также сразу нужно будет после обращение к бд дать ответ, подключений будет до десяти, скрипт нужно написать сегодня, я знаю что профессионалу кто разбирается с сокетами, это просто, я их не знаю по этому и нужна помощь, обработку данных я буду делать сам, мне важно что бы вы сделали прослушивание и отправку ответа клиенту. Я думаю что 10WMZ это легкие деньги для этой работы

По всем вопросам пишите в ICQ 665486965

Но а вот и пример, у меня он не работает, конечно если можно сделать максимально сжатый код, без излишеств, это будет здорово:

set_time_limit(0);

$NULL = NULL;

$address = "127.0.0.1";

$port = 4545;

$max_clients = 10;

$client_sockets = array();

$master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

$res = true;

$res &= @socket_bind($master, $address, $port);

$res &= @socket_listen($master);

if(!$res)

{

die ("Невозможно привязать и прослушивать $address: $port\n");

}

$abort = false;

$read = array($master);

while(!$abort)

{

$num_changed = socket_select($read, $NULL, $NULL, 0, 10);

/* Изменилось что-нибудь? */

if ($num_changed)

{

/* Изменился ли главный сокет (новое подключение) */

if(in_array($master, $read))

{

if(count($client_sockets)

{

$client_sockets[]= socket_accept($master);

echo "Принято подключение (" . count($client_sockets) . " of $max clients)\n";

}

}

/* Цикл по всем клиентам с проверкой изменений в каждом из них */

foreach($client_sockets as $key => $client)

{

/* Новые данные в клиентском сокете? Прочитать и ответить */

if(in_array($client, $read))

{

$input = socket_read($client, 1024);

if($input === false)

{

socket_shutdown($client);

unset($client_sockets[$key]);

}

else

{

$input = trim($input);

if (!@socket_write($client, "Вы сказали: $input\n") )

{

socket_close($client);

unset ( $client_sockets[$key] ) ;

}

}

if($input == 'exit')

{

socket_shutdown($master);

$abort = true;

}

}// END IF in_array

} // END FOREACH

} // END IF ($num_changed)

$read = $client_sockets;

$read[] = $master;

} // END WHILE

?>

10 лет назад
panfer
Михаил 
41 год
10 лет в сервисе
Был
10 лет назад

Заявки фрилансеров

Нет заявок фрилансеров