尝试利用php 建立一个port socket.
code 是这样的:
- #!/usr/bin/php -q
- /*
- Raymond Fain
- Used for PHP5 Sockets with Flash 8 Tutorial for Kirupa.com
- For any questions or concerns, email me at ray@obi-graphics.com
- or simply visit the site, www.php.net, to see if you can find an answer.
- */
-
-
- error_reporting(E_ALL);
-
- set_time_limit(0);
-
- ob_implicit_flush();
-
- $address = '192.168.0.16';
- $port = 9999;
-
- //---- Function to Send out Messages to Everyone Connected ----------------------------------------
-
- function send_Message($allclient, $socket, $buf) {
- foreach($allclient as $client) {
- socket_write($client, "$socket wrote: $buf");
- }
- }
-
-
-
- //---- Start Socket creation for PHP 5 Socket Server -------------------------------------
-
- if (($master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
- echo "socket_create() failed, reason: " . socket_strerror($master) . "\n";
- }
-
- socket_set_option($master, SOL_SOCKET,SO_REUSEADDR, 1);
-
-
- if (($ret = socket_bind($master, $address, $port)) < 0) {
- echo "socket_bind() failed, reason: " . socket_strerror($ret) . "\n";
- }
-
-
- if (($ret = socket_listen($master, 5)) < 0) {
- echo "socket_listen() failed, reason: " . socket_strerror($ret) . "\n";
- }
-
-
-
- $read_sockets = array($master);
-
- //---- Create Persistent Loop to continuously handle incoming socket messages ---------------------
- while (true) {
- $changed_sockets = $read_sockets;
-
- $num_changed_sockets = socket_select($changed_sockets, $write = NULL, $except = NULL, NULL);
-
- foreach($changed_sockets as $socket) {
-
- if ($socket == $master) {
-
- if (($client = socket_accept($master)) < 0) {
- echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n";
- continue;
- } else {
- array_push($read_sockets, $client);
- }
- } else {
-
- $bytes = socket_recv($socket, $buffer, 2048, 0);
-
- if ($bytes == 0) {
- $index = array_search($socket, $read_sockets);
- unset($read_sockets[$index]);
- socket_close($socket);
- }else{
- $allclients = $read_sockets;
- array_shift($allclients);
- send_Message($allclients, $socket, $buffer);
- }
- }
-
- }
- }
-
- ?>
复制代码
然后在localhost 开启这个file 时, 显示:
fatal error Call to undefined function socket_create() in C:\web\apache2\htdocs\server.php line 32
line 32 是 if (($master = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
也try 了很多 其他类似的create socket script., 也是一样的结果.
google 找到的方案试了都是解决不了.
例如php.ini
- ;extension=php_snmp.dll
- extension=php_sockets.dll
- ;extension=php_sybase_ct.dll
复制代码
我用window install apache2,
各位大大有人成功的使用过create socket function 吗? |