zl程序教程

您现在的位置是:首页 >  后端

当前栏目

使用PHP创建SOCKET服务

PHP服务 创建 socket 使用
2023-09-14 09:02:06 时间

最近好奇,接触接触PHP的socket编程,发现还是很好玩儿的。下面贴出来demo源码跟大家分享


Server.php

 ?php

 * PHP Socket Server

 * */

//确保客户端连接时不会超时

error_reporting(0); 

set_time_limit(0);

//设置地址与端口

$address = 127.0.0.1; //服务端ip

$port = 2046;

//创建socket:AF_INET=是ipv4 如果用ipv6,则参数为 AF_INET6 , SOCK_STREAM为socket的tcp类型,如果是UDP则使用SOCK_DGRAM

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() failed : ".socket_strerror(socket_last_error()). "\n");

//阻塞模式

socket_set_block($sock) or die("socket_set_block() failed : ".socket_strerror(socket_last_error()) ."\n");

//绑定到socket端口

$result = socket_bind($sock, $address, $port) or die("socket_bind() failed : ". socket_strerror(socket_last_error()) . "\n");

//开始监听

$result = socket_listen($sock, 4) or die("socket_listen() failed : ". socket_strerror(socket_last_error()) . "\n");

echo "OK\nBinding the socket on $address:$port ...\n";

echo "OK\nNow ready to accept connections.\nListening on the socket ...\n";

do {//Never stop the daemon

 //它接收连接请求并调用一个子链接socket来处理客户端和服务器间的信息

 $msgsock = socket_accept($sock) or die("sock_accept() failed : ". socket_strerror(socket_last_error()) . "\n");

 //读取客户端数据

 echo "Read client data \n";

 $buf = socket_read($msgsock, 8192);

 echo "Received msg : $buf \n";

 //数据传输,向客户端写入返回结果

 $msg = "welcome \n";

 socket_write($msgsock, $msg, strlen($msg)) or die("socket_write() failed : ". socket_strerror(socket_last_error()). "\n");

 //输出返回到客户端时,父/子socket都应通过socket_close来终止

 socket_close($msgsock);

}while(true);

socket_close($sock);

Client.php

 ?php

 * php socket client

 * */

error_reporting(0); 

set_time_limit(0);

$host = 127.0.0.1;

$port = 2046;

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("Could not create socket.\n");

$connection = socket_connect($socket, $host, $port) or die("Could not connect server.\n");

socket_write($socket, "Hello Socket!") or die("Write failed.\n");

while($buff = socket_read($socket, 1024, PHP_NORMAL_READ)) {

 echo "Response was : ". $buff . "\n";

socket_close($socket);



使用消息服务(MNS)订阅阿里云物联网平台设备消息PHP示例参考 物联网平台服务端订阅支持将设备消息发送至消息服务(MNS),云端应用通过监听MNS队列,获取设备消息。本文主要演示使用最新版MNS PHP SDK消费订阅到MNS Queue中的消息。
阿里云栖开发者沙龙PHP技术专场-聊聊服务稳定性保障这些事 摘要:本文主要带大家了解服务稳定性的重要性和相关策略。策略大概分两部分,第一方面从架构层面介绍保障服务稳定性的常见策略(限流,降级,隔离,超时,重试和集群)。第二个方面是从流程方面(code review, 压测,灰度和监控)讲解怎么去保证稳定性。
假设你想做一个像微博短链接那样的短链接服务,短链接服务生成的URL都非常短例如: http://t.cn/E70Piib, 我们应该都能想到链接中的E70Piib对应的就是存储长链接地址的数据记录的ID,可是这个有大小写字母和...