Php 套接字与流
我认为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是一个扩展。
我的问题是(是):
- 在提到套接字编程时,套接字和流之间有什么区别?
- 是否有任何与套接字编程相关的功能,一个人可以拥有,而另一个则不能?