php内置函数
只能够主动连接,无法进行监听等活动。 函数包或fsockopen和pfsockopen,后者是长连接,persistent的缩写 利用函数建立连接后,资源的传输获取可以用文件操作的几个函数。fgets()(读字符,用于读取正行或字符串) fread()(用于读取整块内容) fwrite() fclose()等
PECL 函数库函数
函数库有强大的socket功能,包括监听端口,阻塞和非阻塞切换,多客户登录等等。
socket作为一个操作传输层的API,先要建立一个socket(使用函数socket_create),然后再把主机绑定(socket_bind用于服务器绑定ip端口),客户端连接(用socket_connect),写入socket_write(),发送socket_send(),socket_read()读取数据
读写数据时应在无线循环中,因为双方都要长时间等待特别是服务器端,所以用无线循环接受数据。
也要注意设置set_time_limit(0);来设置脚本最长运行时间
udp和tcp的区别在create时的参数时就可以区别设置
字符流
字符流用stream_socket的一系列函数,其客户端和服务器的socket创建方式不同,一个是strean_socket_server一个是stream_socket_client,用tcp还是udp在第一个参数时设置,如tcp://127.0.0.1:222(用tcp 连接127.0.0.1的222端口)。
多客户:多客户就要维护一个数组存放同时进入的客户。
关键函数是stream_select(),该函数可以读取到所有连接信息,但是其类型必须为stream。
注意点:线程被close后类型会变为unknown(看文件代码)