如何使用php套接字来编写字符串

时间:2013-07-29 03:48:35

标签: php sockets

所以我试图让我的脑袋缠绕在这......

我打开端口

 $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%肯定我在这里遇到了什么问题,所以请我直截了当。

2 个答案:

答案 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>命令)