我认为 php 套接字和 php 流是相互重叠的。
我已经成功地使用套接字或流制作了一个 CLI PHP 聊天客户端和一个服务器。
这里有一些说明性的代码行:
使用套接字:
...
$main_socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Cannot create socket.\n");
@socket_bind($main_socket, $host, $port) or die("Could not bind to socket $host : $port.\n");
@socket_listen($main_socket, 5) or die("Could not set up socket listener\n");
...
使用流:
...
$main_socket = @stream_socket_server ("tcp://$host:$port", $errno, $errstr, STREAM_SERVER_BIND | STREAM_SERVER_LISTEN) or die("Cannot create socket.\n");
$clients = array($main_socket);
$clients_peername = array(array('port' => $port));
fputs(STDOUT, "Waiting for connections...\n");
...
这里的要点是可以制作客户端和服务器
使用套接字函数或流函数。
我知道 Streams 是 PHP 核心的一部分,而 Sockets 是扩展。
我的问题是:
- 当提到套接字编程时,套接字和流有什么区别?
- 是否存在与套接字编程相关的任何功能,一个人可以拥有,而另一个人却不能?
根据手册,套接字扩展是更底层的。例如,您在创建套接字时可以更细粒度地控制套接字,并且可以选择 SOCK_STREAM、SOCK_DGRAM、SOCK_SEQPACKET 等。
套接字扩展基于流行的 BSD 套接字实现了套接字通信功能的低级接口,提供了充当套接字服务器和客户端的可能性。
有关更通用的客户端套接字接口,请参阅stream_socket_client()、stream_socket_server()、fsockopen() 和 pfsockopen()。
source: http://www.php.net/manual/en/intro.sockets.php http://www.php.net/manual/en/intro.sockets.php
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)