网络编程--socket
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。
【网络编程--socket】注意点:线程被close后类型会变为unknown(看文件代码)
推荐阅读
- thinkphp|thinkphp 3.2 如何调用第三方类库
- CGI,FastCGI,PHP-CGI与PHP-FPM
- 网络编程基础--HTTP
- PHP开发-Mac搭建ThinkPHP5.0
- 《Unix网络编程》第一卷第三版|《Unix网络编程》第一卷第三版 源码编译
- 依赖注入模块
- thinkphp3.2下实现阿里云视频点播实例(客户端JavaScript上传)
- php异常处理
- mac|mac php5.6+mongdb+Apache环境配置
- 网络|网络编程释疑(TCP连接拔掉网线后会发生什么)