-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathphp_socket_example.php
61 lines (48 loc) · 1.16 KB
/
php_socket_example.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
error_reporting(E_ERROR);
set_time_limit(0);
ob_implicit_flush();
if(count($argv) < 2)
{
die("\nUsage: php php_socket_example.php <address> <port>\n");
}
$sock = socket_create(AF_INET,SOCK_STREAM,0);
socket_bind($sock, $argv[1], $argv[2]);
socket_listen($sock);
echo "\n[------------------------ Server started at ". $argv[1] . ":" .$argv[2] . " ---------------------------------]\n";
$client = array();
while(true)
{
socket_set_block($sock);
$read[0] = $sock;
for($i = 0; $i < 5; $i++)
{
if($client[$i]['sock'] != null)
$read[$i+1] = $client[$i]['sock'];
}
$ready = socket_select($read, $write = NULL, $except = NULL, $tv_sec = NULL);
if(in_array($sock,$read))
{
for($i = 0;$i < 5; $i++)
{
if($client[$i]['sock'] == null)
{
if(($client[$i]['sock'] = socket_accept($sock)) < 0)
{
echo "Accept failed: ".socket_strerror($client[$i]['sock']);
}
else
{
echo "\n------------------------------- Client #".$i." connected! ------------------------------------\n";
}
break;
}
elseif($i == 4)
{
echo "The maximum client number (5) was exceeded";
}
}
if(--$ready <= 0)
continue;
}
}