本文共 766 字,大约阅读时间需要 2 分钟。
网上有很多php socket的教程,但是我在自己写的时候还是碰到了几个问题,然后调试了一段时间,有一些目前也不知道原因:
1.第一个问题是,如果你是这么写的:
if($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) === false) echo 'socket_create() failed, reason:' . socket_strerror(socket_last_error()) . "\n";
那么你的$sock不会是socket资源而会得到一个false,要改为如下写法:
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if($sock === false) echo 'socket_create() failed, reason:' . socket_strerror(socket_last_error()) . "\n";
2.客户端的代码如果想得到服务器端write的内容,也是可以的,但是客户端的read要在write之后才可以:
$rs = socket_write($sock, $words); $hear = socket_read($sock, 8192);
3.客户端不能使用socket_accept。
4.现在还有一个问题就是如果客户端退出之后,服务器端还是会一直打印false。
5.下面的代码服务器端只能支持一个客户端的连接,怎么实现服务器端支持多客户端还不清楚。
下面列出服务器端和客户端的代码:
服务器端:
客户端:
另外发现一个对于socket的比较好理解的解释:
socket就是应用层与TCP/IP协议族通信的中间软件抽象层转载地址:http://jemyn.baihongyu.com/