所以我试图让我的脑袋缠绕在这......
我打开端口
$remip = $_SERVER['SERVER_ADDR']; //Grab my server address
$fp = fsockopen($remip, 80, $errno, $errstr, 10);//Godaddy hosting only 80 and 443 ports work
//fsockopen(ip address , port, IDK, IDK, timeout delay)
所以现在端口打开或者如果没有,可能会进行一些错误检查以确保
if (!$fp) { echo "$errstr ($errno)<br>\n"; exit; } //Not sure what this echos out but its clear how it stops errors
所以现在端口是打开的,任何ip /客户端都可以在这个端口连接????
我假设我现在可以连接......
所以在我的客户端上我打开一个套接字到我的服务器ip地址端口tcp连接.....
php文件包含类似
的内容else {$out = "hello, 80\r\n"; //out specifies the string to be written , bytes to write
fwrite($fp, $out); //$fp is the handle
fclose($fp)}//close the connection
在这一点上,我假设我的客户端收到了写给你的hello ..
关闭连接
完成我是全新的,所以我试图在这里了解一些示例代码...... 那么这个插座有多长时间可以打开?如果我想保持此端口打开,我需要执行一个cron作业来定期启动此文件。
我100%肯定我在这里遇到了什么问题,所以请我直截了当。
答案 0 :(得分:0)
我认为你对fsockopen的作用有误解。在您的示例中,您的fsockopen实际上并未打开端口80(如打开服务器套接字),但它会打开一个连接到服务器本身端口80的客户端套接字。它实际上打开了一个(客户端)端口,它获得了一个(非完全)随机数。 使用fsockopen连接后,您可以将HTTP命令发送到Web服务器,例如GET /index.php
答案 1 :(得分:0)
您需要使用的是socket_listen()
和socket_bind()
。文档中有一些地方向您展示如何在套接字上进行PHP监听:http://www.php.net/manual/en/function.socket-listen.php
我建议您阅读并试用它们,然后使用名为netcat
的unix工具进行测试(通常为nc <ip_address> <port>
命令)