当前位置:首页 » 云服务器 » php搭建socket服务器

php搭建socket服务器

发布时间: 2024-06-07 20:04:24

1. 求php SOCKET编程原理

你了解什么是socket不?
如果御稿差不了解建议去了解下,都是需要掌握的知识

我大概跟你描述下流程

服务器端先初始化Socket,绑定端口(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。
客户端初始化一个敬差Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

其实网上资源很多了, 多了解多动镇皮手多你自己的进步有很大的帮助

2. 想问下php的socket的工作流程是什么

PHP 使用Berkley的socket库来创建它的连接。你可以知道socket只不过是一个数据结构。你使用这个socket数据结构去开始一个客户端和服务器之间的会话。这个服务器是一直在监听准备产生一个新的会话。当一个客户端连接服务器,它就打开服务器正在进行监听的一个端口进行会话。这时,服务器端接受客户端的连接请求,那么就进行一次循环。现在这个客户端就能够发送信息到服务器,服务器也能发送信息给客户端。
产生一个Socket,你需要三个变量:一个协议、一个socket类型和一个公共协议类型。产生一个socket有三种协议供选择,继续看下面的内容来获取详细的协议内容。
定义一个公共的协议类型是进行连接一个必不可少的元素。下面的表我们看看有那些公共的协议类型。

表一:协议
名字/常量 描述
AF_INET 这是大多数用来产生socket的协议,使用TCP或UDP来传输,用在IPv4的地址
AF_INET6 与上面类似,不过是来用在IPv6的地址
AF_UNIX 本地协议,使用在Unix和Linux系统上,它很少使用,一般都是当客户端和服务器在同一台及其上的时候使用
表二:Socket类型
名字/常量 描述
SOCK_STREAM 这个协议是按照顺序的、可靠的、数据完整的基于字节流的连接。这是一个使用最多的socket类型,这个socket是使用TCP来进行传输。
SOCK_DGRAM 这个协议是无连接的、固定长度的传输调用。该协议是不可靠的,使用UDP来进行它的连接。
SOCK_SEQPACKET 这个协议是双线路的、可靠的连接,发送固定长度的数据包进行传输。必须把这个包完整的接受才能进行读取。
SOCK_RAW 这个socket类型提供单一的网络访问,这个socket类型使用ICMP公共协议。(ping、traceroute使用该协议)
SOCK_RDM 这个类型是很少使用的,在大部分的操作系统上没有实现,它是提供给数据链路层使用,不保证数据包的顺序

表三:公共协议
名字/常量 描述
ICMP 互联网控制消息协议,主要使用在网关和主机上,用来检查网络状况和报告错误信息
UDP 用户数据报文协议,它是一个无连接,不可靠的传输协议
TCP 传输控制协议,这是一个使用最多的可靠的公共协议,它能保证数据包能够到达接受者那儿,如果在传输过程中发生错误,那么它将重新发送出错数据包。

现在你知道了产生一个socket的三个元素,那么我们就在php中使用socket_create()函数来产生一个socket。这个 socket_create()函数需要三个参数:一个协议、一个socket类型、一个公共协议。socket_create()函数运行成功返回一个包含socket的资源类型,如果没有成功则返回false。
Resourece socket_create(int protocol, int socketType, int commonProtocol);

现在你产生一个socket,然后呢?php提供了几个操纵socket的函数。你能够绑定socket到一个IP,监听一个socket的通信,接受一个socket;现在我们来看一个例子,了解函数是如何产生、接受和监听一个socket。

<?php
$commonProtocol = getprotobyname(“tcp”);
$socket = socket_create(AF_INET, SOCK_STREAM, $commonProtocol);
socket_bind($socket, ‘localhost’, 1337);
socket_listen($socket);
// More socket functionality to come
?>

上面这个例子产生一个你自己的服务器端。例子第一行,
$commonProtocol = getprotobyname(“tcp”);
使用公共协议名字来获取一个协议类型。在这里使用的是TCP公共协议,如果你想使用UDP或者ICMP协议,那么你应该把getprotobyname() 函数的参数改为“udp”或“icmp”。还有一个可选的办法是不使用getprotobyname()函数而是指定SOL_TCP或SOL_UDP在 socket_create()函数中。
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
例子的第二行是产生一个socket并且返回一个socket资源的实例。在你有了一个socket资源的实例以后,你就必须把socket绑定到一个IP地址和某一个端口上。

3. PHP如何开启socket

如果你是windows系统,请进入安装目录,找到php.ini这个文件,找到下面一行。
找到extension=php_sockets.dll一句,将前面的;去掉
;是注释的意思。

如果你的Linux系统,重新编译,./configure --help,自己看去,相信你懂的,你也必须学着看这个了。想看看自己的php是否有这个拓展,使用php -m命令来看,如果有,就不用重新编译了。
--enable-sockets

热点内容
电脑主机做服务器下载快不 发布:2024-11-28 00:32:40 浏览:386
冷冻存储盒 发布:2024-11-28 00:21:04 浏览:127
达内幼儿编程 发布:2024-11-28 00:21:02 浏览:320
我的世界下100层是什么服务器 发布:2024-11-28 00:16:50 浏览:548
怎么改配置密码 发布:2024-11-28 00:16:44 浏览:113
服务器芯片v几是什么 发布:2024-11-28 00:15:37 浏览:599
家庭麦克需要什么配置才能用 发布:2024-11-28 00:05:28 浏览:384
c语言then是什么意思 发布:2024-11-27 23:54:07 浏览:195
提升访问 发布:2024-11-27 23:41:39 浏览:821
为什么学习编程 发布:2024-11-27 23:41:37 浏览:942