Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP套接字编程:无法从外部网络访问服务器_Php_Sockets_Networking_Portforwarding - Fatal编程技术网

PHP套接字编程:无法从外部网络访问服务器

PHP套接字编程:无法从外部网络访问服务器,php,sockets,networking,portforwarding,Php,Sockets,Networking,Portforwarding,我正在从事PHP套接字编程项目。在这个项目中,我们将在php套接字中创建一个服务。此套接字将侦听一个特定端口。来自外部网络的客户端将能够在该端口上通信 到目前为止,我能够用php创建用于套接字编程的服务器和客户端。现在我的电脑已连接到局域网,因此我必须使用端口转发将我的电脑连接到外部客户端。我转发端口2000,该端口上的所有通信都传输到我的pc IP地址。我有netgear路由器n150无线adsl。我在该路由器上添加了所有配置。我在这个网站在线测试端口转发,它说端口是开放的 我在本地(intr

我正在从事PHP套接字编程项目。在这个项目中,我们将在php套接字中创建一个服务。此套接字将侦听一个特定端口。来自外部网络的客户端将能够在该端口上通信

到目前为止,我能够用php创建用于套接字编程的服务器和客户端。现在我的电脑已连接到局域网,因此我必须使用端口转发将我的电脑连接到外部客户端。我转发端口2000,该端口上的所有通信都传输到我的pc IP地址。我有netgear路由器n150无线adsl。我在该路由器上添加了所有配置。我在这个网站在线测试端口转发,它说端口是开放的

我在本地(intranet)上测试代码,它运行良好。但当我试图在我的pc机上运行服务器,并从我的ipage托管服务器web服务器运行客户端时。它向我抛出错误“服务器无法连接到服务器”

Server.php

<?php

// set some variables
// My LAN Ip
$host = "192.168.0.5";
$port = 2000;
// don't timeout!
set_time_limit(0);
// create socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create       socket\n");
// bind socket to port
$result = socket_bind($socket, $host, $port) or die("Could not bind to socket\n");
// start listening for connections
$result = socket_listen($socket, 3) or die("Could not set up socket  listener\n");  
$spawn = socket_accept($socket) or die("Could not accept incoming  connection\n");
// read client input
$input = socket_read($spawn, 1024) or die("Could not read input\n");
// clean up input string
$input = trim($input);
echo "Client Message : " . $input;
// reverse client input and send back
$output = strrev($input) . "\n";
socket_write($spawn, $output, strlen($output)) or die("Could not write      output\n");
// close sockets
socket_close($spawn);
socket_close($socket);
?>

即使我认为问题出在lan转发中,也可以尝试使用以下方法进行测试:

telnet 117.223.90.191 2000
另一个尝试是让服务器监听所有接口

$host = "0.0.0.0";
看一看

$host = "0.0.0.0";