来自 计算机编程 2019-12-29 05:22 的文章
当前位置: 澳门威尼斯人平台 > 计算机编程 > 正文

PHP的Socket网络编程入门指引

什么是TCP/IP、UDP?

下面是相应的代码:
PHP 代码:
复制代码 代码如下:

TCP/IP即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网设计的。 UDP是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。 这里有一张图,表明了这些协议的关系。

// 设置一些基本的变量
$host = "192.168.1.99";
$port = 1234;
// 设置超时时间
set_time_limit(0);
// 创建一个Socket
$socket = socket_create(AF_INET, SOCK_STREAM, 0) or die("Could not create
socketn");
//绑定Socket到端口
$result = socket_bind($socket, $host, $port) or die("Could not bind to
socketn");
// 开始监听链接
$result = socket_listen($socket, 3) or die("Could not set up socket
listenern");
// accept incoming connections
// 另一个Socket来处理通信
$spawn = socket_accept($socket) or die("Could not accept incoming
connectionn");
// 获得客户端的输入
$input = socket_read($spawn, 1024) or die("Could not read inputn");
// 清空输入字符串
$input = trim($input);
//处理客户端输入并返回结果
$output = strrev($input) . "n";
socket_write($spawn, $output, strlen ($output)) or die("Could not write
outputn");
// 关闭sockets
socket_close($spawn);
socket_close($socket);
?>

TCP/IP协议族包括运输层、网络层、链路层。现在你知道TCP/IP与UDP的关系了吧。Socket在哪里呢? 在图1中,我们没有看到Socket的影子,那么它到底在哪里呢?还是用图来说话,一目了然。

原来Socket在这里。Socket是什么呢? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。你会使用它们吗? 前人已经给我们做了好多的事了,网络间的通信也就简单了许多,但毕竟还是有挺多工作要做的。以前听到Socket编程,觉得它是比较高深的编程知识,但是只要弄清Socket编程的工作原理,神秘的面纱也就揭开了。 一个生活中的场景。你要打电话给一个朋友,先拨号,朋友听到电话铃声后提起电话,这时你和你的朋友就建立起了连接,就可以讲话了。等交流结束,挂断电话结束此次交谈。 生活中的场景就解释了这工作原理,也许TCP/IP协议族就是诞生于生活中,这也不一定。

PHP的Socket编程概述php5.3自带了socket模块,使得php具有socket通信能力,具体api可以参考官方手册:, 具体实现跟c非常类似,只是少了内存分配和网络字节序转换这种底层操作

同时,php的pcntl模块和posix模块配合可以实现基本的进程管理、信号处理等操作系统级别的功能。这里有两个非常关键的函数,pcntl_fork()和posix_setsid()。fork()一个进程,则表示创建了一个运行进程的副本,副本被认为是子进程,而原始进程被认为是父进程。当fork()运行之后,则可以脱离启动它的进程和终端控制等,也意味着父进程可以自由退出。pcntl_fork()返回值,-1表示执行失败,0表示在子进程中,大于0表示在父进程中。setsit(),它首先使新进程成为一个新会话的“领导者”,最后使进程不再控制终端。这也是成为守护进程最关键一步,这意味着,不会随着终端关闭而强制退出进程。对于一个不会被中断的常驻进程来说,这是很关键的一步。进行最后一次fork(),这一步不是必须的,但通常都这么做,它最大的意义是防止获得控制终端

什么是守护进程?一个守护进程通常被认为是一个不对终端进行控制的后台任务。它有三个很明显的特征:

本文由澳门威尼斯人平台发布于计算机编程,转载请注明出处:PHP的Socket网络编程入门指引

关键词: