我是套接字的新手 . 我从谷歌的代码中引用了它,但似乎没有用 .
我发布服务器和客户端PHP文件 . 请确定问题 .
Server.php
<?php
$host = "xxx.xxx.xxx.xxx/myfolder/server.php"; //host
$port = 9000; //port
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) ;
$result = socket_bind($socket, $host, $port);
$result = socket_listen($socket,5);
$spawn = socket_accept($socket);
$input = socket_read($spawn , 1024);
$output = strrev($input)."n";
socket_write($spawn, $output , strlen($output));
socket_close($spawn);
socket_close($socket);
?>
这是Client.php
<?
$host = "xxx.xxx.xxx.xxx/myfolder/server.php";
$port = 9000;
$socket = socket_create(AF_INET, SOCK_STREAM, 0) ;
$result = socket_connect($socket, $host, $port) ;
socket_write($socket, $message, strlen($message)) ;
$result = socket_read ($socket, 1024) ;
echo "Reply From Server :".$result;
socket_close($socket);
?>
在我的主机上的公共目录上有上述两个文件之后 .
我先运行命令: php -q /var/www/html/myfolder/server.php
但我在我的cmd shell上得到这个:
$ php -q /var/www/html/myfolder/server.php PHP警告:socket_bind():主机查找失败[-10001]:第13行/var/www/html/myfolder/server.php中的未知主机无法在服务器上绑定套接字
(是的,端口9000是开放的)
1 回答
创建套接字服务器时,不要将主机指定为脚本的完整URL;这就是绑定失败的原因 .
看一下这个样本:http://www.php.net/manual/en/sockets.examples.php