Voting

: five plus one?
(Example: nine)

The Note You're Voting On

renmengyang567 at gmail dot com
6 years ago
<explain>
A simple socket-select case ^_^

<?php
$sock
= socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, 1);
socket_bind($sock, '127.0.0.1',5000);
socket_listen($sock,1024);
$all_sock[(int)$sock] = $sock;

while (
true) {
$read = $write = $except = [];
$tv_sec = 5;
$tv_usec = 5000;
$read = $all_sock;

$changed = socket_select($read, $write, $except, $tv_sec, $tv_sec);

if (
false == $changed)
print
"[error]socket_select() failed
("
.socket_strerror(socket_last_error()) . ")\n";

if (
$changed < 1)
continue;

//var_dump($read);
//sleep(2);
foreach ($read as $rsock) {
// 服务端连接
if ($rsock === $sock) {
$client = socket_accept($sock);
$all_sock[(int)$client] = $client;

} else {
//客户端连接
$msg= socket_read($rsock, 400,PHP_NORMAL_READ);
if (
$msg !== '') {
var_dump($msg);
}
}
}
}
socket_close($sock);

<< Back to user notes page

To Top