<?php echo "php"; set_time_limit(0); while(true)
{

echo "begin";
$server_ip  = "127.0.0.1";
$server_port = 5000;
$server_socket = socket_create(AF_INET,SOCK_DGRAM,0);

if(!$server_socket){
echo "server_socket create fail";
}

if(($rtn = socket_bind($server_socket,$server_ip,$server_port)) < 0){
echo "socket_bind() fail, reason :".socket_strerror($rtn)."\n";
} $recv_rtn = socket_recvfrom($server_socket,$buf,65535,0,$client_ip,$client_port);

if($buf != ""){

echo "client ip is ".$client_ip;
echo "client port is ".$client_port;
echo "buf is ".$buf;

$sendbuf = "test Hello";
$len = strlen($sendbuf);
socket_sendto($server_socket,$sendbuf,$len,0,$client_ip,$client_port);
}
}

?>
本机通过php.exe然后执行php socket服务器,同时在本地运行一个客户端(是用C++写的),然后客户端发送消息,服务能收到信息,也能成功返回消息可是我在局域网的机子上运行php.exe socket文件,我本地运行客户端,向服务器发送消息却访问不了,寻找解决方式?

解决方案 »

  1.   

    sorry,看错了,你监听的是127.0.0.1,别人怎么访问,要让局域网可以访问应该监听你的局域网ip
      

  2.   

    嗯,这个可以访问到我这边的服务器,那我现在把建的socket 服务器的php文件放在我的一个网站服务器,通过某种方式,运行该文件,我这边就访问不了,这个要怎么处理
      

  3.   

    IP已经改成服务器IP,本地防火墙也关了,可是发送的消息socket收不到
      

  4.   

    看看有没有错误日志
    netstat -ano|find "你的端口号"
    看看是否正在监听另外你用什么方式启动的?
      

  5.   

    我发送消息的方式是用UDP的,所以没有侦听(侦听应该是针对TCP吧)方式启动?是启动服务器php文件吗?
      

  6.   

    udp应该也有的,你是远程ssh连接吗?
    用php sockserver.php &或者screen -dmS phpsocksrv php sockserver.php试试,这样你退出的时候php就不会停止了
      

  7.   

    php 写 socket server,,, 不是找屎么???建议 python....