0

所以我试图让我的头围绕这个......

我打开端口

 $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/client 都可以连接到这个端口????

我假设我现在可以连接....

所以在我的客户端上,我打开一个到我的服务器 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% 确定我这里有问题,所以请直截了当。

4

2 回答 2

0

我认为您对 fsockopen 的功能有误解。在您的示例中,您的 fsockopen 实际上并没有打开端口 80(如打开服务器套接字),但它打开了一个连接到服务器本身的端口 80 的客户端套接字。它实际上确实打开了一个(客户端)端口,该端口获得了一个(不完全)随机数。使用 fsockopen 连接后,您可以向网络服务器发送 HTTP 命令,例如 GET /index.php

于 2013-07-29T03:55:20.697 回答
0

您需要使用的是socket_listen()socket_bind()。文档中有几个地方向您展示了如何让 PHP 监听套接字:http ://www.php.net/manual/en/function.socket-listen.php

我建议您阅读并尝试它们,只需使用一个名为netcatnc <ip_address> <port>通常是命令)的 unix 工具进行测试

于 2013-07-30T01:48:23.927 回答