【发布时间】:2012-04-03 08:53:23
【问题描述】:
我认为 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 是一个扩展。
我的问题是:
- 在提到套接字编程时,套接字和流有什么区别?
- 是否有任何与套接字编程相关的功能,一个可以拥有而另一个不能?
【问题讨论】:
-
@JamWaffles 感谢您的编辑,对不起我的英语。
-
没问题。你的英语几乎是完美的,所以没有什么可担心的:)