【发布时间】:2014-05-12 07:45:55
【问题描述】:
我是新的套接字。我从谷歌的代码中得到了参考,但它似乎不起作用。
我正在发布服务器和客户端 php 文件。请确定问题。
服务器.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 端口是开放的)
【问题讨论】:
-
你想完成什么?您确定要使用 PHP 作为服务器在套接字上侦听传入连接吗?虽然 PHP 可以做到这一点,但它并不是最适合的环境。例如,当您想要接受连接时,您需要保持服务器进程(PHP 脚本)一直运行。这可以通过运行一个 cronjob 来完成,每隔几次检查前一个进程是否仍然存在,等等。
-
我只需要使用 php 来解决这个问题...你能建议我解决我的问题吗
-
您看一下 Latheesan Kanes 提供的答案了吗?归根结底,主机是一个 IP 地址或解析为 IP 地址的主机名。但它不是 URL。套接字连接不一定使用 HTTP。