我正在开发一个通过套接字发送数据的php应用程序。在我的主页面上,我建立了与客户端的联系,我想从网络应用程序的另一个页面发送数据..但我不知道该怎么做。
我目前正在尝试使用$ _SESSION变量[闭上眼睛这不太漂亮]
主页:
$socket = socket_create(AF_INET, SOCK_STREAM, 0);
$result = socket_bind($socket, $host, $port);
$result = socket_listen($socket, 3);
$_SESSION['mySocket'] = socket_accept($socket) ;
socket_read($_SESSION['mySocket'], 1024);
第二页:
socket_write($_SESSION['mySocket'], "myText", 6) ;
但它不起作用,因为$_SESSION['mySocket']
不再是第二页上的资源(只是0
)...如果我在主页面上使用write命令它工作正常,但不是在另一页上。你知道为什么吗?有没有比使用$ _SESSION变量更清晰的方法(肯定有)?
编辑:也许我的真正问题是:套接字何时关闭(如果我没有要求)?
答案 0 :(得分:0)
套接字实际上仅用于CLI编程,并且您没有可用的$_SESSION
对象。
此外,您首先想要共享套接字是没有意义的,因为套接字是IPC的一种方式。如果你在脚本之间传递套接字句柄,那么套接字的用途是什么?
如果您尝试在一个脚本和另一个脚本之间进行通信,则需要让第一个脚本侦听套接字(就像您所做的那样),然后创建一个无限循环,脚本会在其中侦听请求。
在第二个脚本中,您连接到同一个套接字,但不要听它。
所以我想你真正想要做的是拥有第三个文件config.php
:
并在两个脚本中使用
如果您想在网络上的计算机之间进行通信,您将需要稍后对其进行扩展以使$host
可以独立配置。
总而言之,这是非常高级的编程,您需要阅读更多关于套接字的内容。如果我没有吓到你,你可以阅读一些示例代码,因为它是shown in the PHP manual。