php网络编程tcp

news/2025/3/9 10:44:36/文章来源:https://www.cnblogs.com/xuxiaobo/p/18625006

服务端:

<?php
$server = new Swoole\Server('127.0.0.1', 9501);$server->set(['worker_num' => 8, // worker进程数 cpu1-4倍'max_request' => 10000, // 根据内存定义 https://wiki.swoole.com/#/server/setting// 'open_eof_check' => true,// 'package_eof' => "\r\n",'open_length_check' => true,'package_max_length' => 81920,'package_length_type' => 'S', //see php pack()'package_length_offset' => 0,'package_body_offset' => 4,
]);$server->on('start', function ($server) {echo "TCP Server is started at tcp://127.0.0.1:9501\n";
});$server->on('connect', function ($server, $fd){echo "connection open: {$fd}\n";
});$server->on('receive', function ($server, $fd, $reactor_id, $data) {echo "reactor_id:{$reactor_id}\n";echo "接收到客户端数据:{$data}\n";$message = '我收到你的消息了1';$sendMessage = pack("I", strlen($message)) . $message;$server->send($fd, $sendMessage);$message = '我收到你的消息了2';$sendMessage = pack("I", strlen($message)) . $message;$server->send($fd, $sendMessage);
});$server->on('close', function ($server, $fd) {echo "connection close: {$fd}\n";
});$server->start();/*
推荐观看:swoole
PHP—swoole通往大神修炼之路:av77924246
手把手教你用swoole+websocket实现户外监控直播(总集篇):av79087951
教你用swoole开发网络游戏:av79264440
PHP高级技术手写swoole分布式框架:av78383962
PHP高级技术手写swoole分布式框架(二):av78632435
PHP高级技术手写swoole分布式框架(三):av78748923
PHP高级技术手写swoole分布式框架(框架优化):av78856427
PHP高级技术手写swoole分布式框架(分布式RPC):av79012272
用swoole实现消息推送:av79874641
swoole+docker+redis主从复制及读写分离av78781841
*/

  

客户端:

<?php
$client = new Swoole\Client(SWOOLE_SOCK_TCP);
if (!$client->connect('127.0.0.1', 9501, -1)) {exit("connect failed. Error: {$client->errCode}\n");
}$message = '测试一下,php客户端';
$length = pack("I", strlen($message));
$client->send($length.$message);$length = $client->recv(4);
$length = unpack("I", $length)[1];
echo "收到服务端回复:".$client->recv($length)."\n";$length = $client->recv(4);
$length = unpack("I", $length)[1];
echo "收到服务端回复:".$client->recv($length)."\n";$client->close();//https://www.runoob.com/php/func-misc-pack.html

  

客户端python:

import socket
import structsk = socket.socket()# 必须和server端的一致
sk.connect(('127.0.0.1', 9501))# 客户端 发送 消息给服务端
msg1 = '测试一下,python客户端'
blen = struct.pack('I', len(msg1.encode()))
sk.send(blen)
sk.send(msg1.encode('utf-8'))length = sk.recv(4)
length = struct.unpack('I', length)[0]
msg = sk.recv(length)
print(f"收到服务端回复:{msg.decode('utf-8')}")length = sk.recv(4)
length = struct.unpack('I', length)[0]
msg = sk.recv(length)
print(f"收到服务端回复:{msg.decode('utf-8')}")sk.close()

  

输出:

 

 

php版本的客户端稍有问题,日后再研究

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/857655.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php网络编程swoole websocket

服务端:<?php use Swoole\WebSocket\Server;// 创建 HTTP 服务器 $server = new Server(127.0.0.1, 8888, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);$server->on(start, function ($server) {//print_r($server);echo "Swoole websocket server is started at ws://127.…

php网络编程swoole udp

服务端:<?php $server = new Swoole\Server(127.0.0.1, 9504, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);$server->on(start, function ($server) {echo "UDP Server is started at udp://127.0.0.1:9504\n"; });$server->on(packet, function ($server, $data, …

第36次ccf-csp题解(思维)

比赛链接 https://sim.csp.thusaac.com/contest/36/home比赛感受这会刚打完上海icpc,比起区域赛的题,这个简单太多了。 感受还不错,写的很顺手。除了第3题,其他3题都是一发过。 刷题得长期刷。 A题 移动题意:f : y+1 ;  b : y-1 ;   l : x-1 ;  r : x+1 一个简单的模…

php网络编程swoole http

服务端:<?php use Swoole\Http\Server; use Swoole\Http\Request; use Swoole\Http\Response;// 创建 HTTP 服务器 $server = new Server(127.0.0.1, 9501);$server->on(start, function ($server) {//print_r($server);echo "Swoole http server is started at h…

JVM简介—2.垃圾回收器和内存分配策略

大纲 1.垃圾回收概述 2.如何判断对象存活 3.各种引用介绍 4.垃圾收集的算法 5.垃圾收集器的设计 6.垃圾回收器列表 7.各种垃圾回收器详情 8.Stop The World现象 9.内存分配与回收策略 10.新生代不同配置演示 11.内存泄漏和内存溢出 12.JDK为提供的工具1.垃圾回收概述 2.如何判…

OpenAI 推出嵌入式硬件 SDK,支持 ESP32 语音开发;INFP:音频驱动的双人对话头像生成,自动区分说话者和倾听者

开发者朋友们大家好:这里是 「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

8086汇编(16位汇编)学习笔记02.分段,机器码和寻址

原文链接:https://bpsend.net/thread-112-1-2.html 分段问题1 8086是16位cpu,最多可以访问(寻址)多大内存?运算器一次最多处理16位的数据。地址寄存器的最大宽度为16位。访问的最大内存为:216 = 64K 即 0000 - FFFF。问题2 8086允许最大内存1M,如何实现访问(寻址)到所…

AI对话机器人续:将AI Bot接入企业微信

之前尝试将Coze AI Bot接入到了微信,有朋友问如何接入企业微信,今天有空尝试了下,和你分享一下过程。整体流程和步骤还是基于chatgpt-on-wechat这个开源框架来的,唯一的差别就在于部署chatgpt-on-wechat的时候,需要填写一些企业微信相关的参数和secret。大家好,我是Ediso…

python网络编程之udp

服务端:import socketsk = socket.socket(type=socket.SOCK_DGRAM) # 表示一个udp协议 sk.bind((127.0.0.1, 9504))# 服务端不能先发送消息,因为服务端不知道客户端的ip while True:msg, addr = sk.recvfrom(1024)print(f"接收到客户端数据:{msg.decode(utf-8)}"…

Qt编程快速入门(1)Qt结构简介

Qt构成Qt(/ˈkjuːt/,发音同“cute”)是一个跨平台的C++应用程序开发框架。广泛用于开发GUI程序,这种情况下又被称为部件工具箱。也可用于开发非GUI程序,例如控制台工具和服务器。-摘自维基百科Qt可以在多个平台编译运行,包括Windows、Linux、Mac OS,其运行时的表现取决…

python网络编程之websocket

服务端:import asyncio import websockets# 保存已连接的客户端列表 connected_clients = set()async def handle_websocket(websocket):# 将新的客户端添加到已连接客户端列表remote_address = websocket.remote_addressconnected_clients.add(websocket)print(f"新的客…

.NET 阻止系统睡眠/息屏

本文介绍Windows系统设备下如何阻止系统睡眠/息屏,以及想看当前阻止睡眠/息屏的应用信息 powercfg /requests查看活动列表 在播放音乐时,我们会发现设置了系统电源管理-自动睡眠,计划不会生效,这个音频播放操作阻止了系统自动睡眠。但不会阻止息屏,所以Windows下一般屏幕关…