php udp发送和接收_63、php利用原生socket创建udp服务

1、案例函数汇总

7ba854be67702acc0c673dc462baeb06.png

2、案例

通过socket创建udp服务,获取对端的ip和port信息。并进行打印

2.1、udp服务源码

/**

* Copyright(C) Iamasb

* @project : 3、workerman相关知识点

* @explain : 原生socket创建创建udp服务

* @filename : socket_udp.php

* @author : Iamasb

*/

// 创建udp

if (!($resource = socket_create(AF_INET,SOCK_DGRAM, SOL_UDP))) {

echo "socket create is error";

exit();

}

// 绑定本地ip和端口

if (!socket_bind($resource,'0.0.0.0','1235')) {

echo "socket bind is error";

exit();

}

// 设置端口复用

if (!socket_set_option($resource, SOL_SOCKET, SO_REUSEADDR, 1)) {

echo 'Unable to set option on socket: '. socket_strerror(socket_last_error()) . PHP_EOL;

exit;

}

// 循环

while (1) {

$from = '';

$port = 0;

// 接收数据

socket_recvfrom($resource, $buf, 1024, 0, $from, $port);

echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;

// 往对端发送数据

socket_sendto($resource,'iamasb',strlen('iamasb'),0,$from,$port);

}

2.2、启动udp服务

3、测试

通过编写udp客户端进行测试

3.1、udp客户端代码

if (!($resource = socket_create(AF_INET,SOCK_DGRAM, SOL_UDP))) {

echo "socket create is error";

exit();

}

$msg = "Ping !";

$len = strlen($msg);

socket_sendto($resource, $msg, $len, 0, '127.0.0.1', 1235);

$from = '';

$port = 0;

socket_recvfrom($resource, $buf, 1024, 0, $from, $port);

echo "Received $buf from remote address $from and remote port $port" . PHP_EOL;

socket_close($resource);

3.2、执行udp客户端

3dfb5cc38a3e72512db86d3eb9624fd8.png

此时udp服务端的打印结果如下

1b66578af0cc0f8cf02535488f5ed4ba.png

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

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

相关文章

【转】C#实现SM3国密加密

C#实现SM3国密加密 本文主要讲解“国密加密算法”SM系列之SM3的C#实现方法,加密规则请详阅国密局发布的文档。 首先需第三方Nuget包:Portable.BouncyCastle (源码来自http://www.bouncycastle.org/csharp/) 1.1常规处理 /// &l…

mq集群要建传输队列吗_面试官:消息队列这些我必问!

作者:mousycodersegmentfault.com/a/1190000021054802消息队列连环炮项目里怎么样使用 MQ 的?为什么要使用消息队列?消息队列有什么优点和缺点?kafka,activemq,rabbitmq,rocketmq 都有什么去呗?如何保证消息队列高可用…

【转】国密算法sm4 CBC模式加解密

一.什么是CBC模式? CBC模式的全称是Cipher Block Chaining模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样相互连接在一起。 在CBC模式中,首先将明文分组与前一个密文分组进行异或运算&#xff0c…

oracle数据库连接时报12514_连接Oracle数据库时报ORA-12541:TNS:无监听程序的图文解决教程...

在用PL/SQL Developer等客户端工具连接oracle服务器时出现ORA-12541:TNS:无监听程序的错误,如下图:发现原来是oracle的监听没有启动,重启监听后就连接成功了,下面跟大家分享一下如何启动oracle的监听。1.在安装Oracle服务器的主机上,打开Net Configuration Assistan…

【转】对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)

版权声明:本文为作者原创,如需转载,请注明出处https://blog.csdn.net/weixin_42940826注:以下图片来自于《图解密码学》,这本书讲的更全面细致,建议阅读,在我资源库中有此书,还有使用…

中发生数据丢失_如何防止Redis脑裂导致数据丢失?

所谓的脑裂,就是指在主从集群中,同时有两个主节点,它们都能接收写请求。而脑裂最直接的影响,就是客户端不知道应该往哪个主节点写入数据,结果就是不同的客户端会往不同的主节点上写入数据。而且,严重的话&a…

【转】C#实现SM4国密加密

本文主要讲解“国密加密算法”SM系列之SM4的C#实现方法&#xff0c;加密规则请详阅国密局发布的文档。 首先需第三方Nuget包&#xff1a;Portable.BouncyCastle &#xff08;源码来自http://www.bouncycastle.org/csharp/&#xff09; 1.1 SM4主类 /// <summary>/// //…

vscode怎么自动将px转换成vw_基于react/vue移动端适配之px自动转rem、vw

作为一名前端开发&#xff0c;在做移动端适配时rem、vw是我们经常用到的单位&#xff0c;但是我们在实际开发过程中需要将设计稿上的px转换成rem&#xff0c;如果手动去计算&#xff0c;将是一个很耗时、费力的过程。这是就需要一个工具可以帮我们自动将px转成rem、vw。开始之前…

【转】TransactionScope事务简介

在.NET 1.0/1.1 版本我们使用SqlTransaction.处理事务 string connString ConfigurationManager.ConnectionStrings["db"].ConnectionString; using (var conn new SqlConnection(connString)) { conn.Open(); using (IDbTransaction tran conn.BeginTransact…

后台接收datetime_input上传date日期时间数据到后台报400怎么办?

前端上传日期时间数据到后台时&#xff0c;上传失败我这里是用里存放时间&#xff0c;上传到后台的controller方法时&#xff0c;参数类型是java.util.Date&#xff0c;发现没有到controller方法里面。报错&#xff1a;不能将String转成Date。我想错误的原因是前端传上来的是St…

【转】C#中使用TransactionScope类(分布式事务) 和 锁

如果在C#中使用TransactionScope类(分布式事务),则须注意如下事项: 1、在项目中引用using System.Transactions命名空间&#xff08;先要在添加net组件的引用&#xff09;; 2、具体示例如下&#xff1a; public static void sendMessage(){ TransactionOptions tran…

网络通道数2的倍数_限流笔记-通道限流(二)

在工作中的时候&#xff0c;由于我负责的一个系统需要调用很多的第3方的系统&#xff0c;可是呢&#xff0c;这些个第3方的系统的性能完全不一致&#xff0c;有的好有的坏&#xff0c;还成本都不一样&#xff0c;当然了平时把&#xff0c;直接使用成本低的就行了&#xff0c;但…

【转】[技术回顾系列]--WebService事务处理

如果在WEB服务中有这样一个场景&#xff0c;某个WEB服务的方法要执行两个任务&#xff0c;它首先要在数据库中创建一个新表&#xff0c;接着调用对象来收集和格式化数据&#xff0c;并在新表中插入数据。象这样的一组方法&#xff0c;我们必须保证他们都成功执行&#xff0c;否…

mysql题目_MySQL练习题

创建下列表并创建相关约束问题1&#xff1a;查询出成绩表&#xff0c;而且student_id 后面要有对应的学生名&#xff0c;course_id 后面要有对应的课程名.1 SELECT2 score.sid,3 score.student_id,4 student.sname,5 score.course_id,6 course.cname,7 score.number8 FROM scor…

【转】BASE64编码规则

Base64编码要求把3个8位字节&#xff08;3*824&#xff09;转化为4个6位的字节&#xff08;4*624&#xff09;&#xff0c;之后在6位的前面补两个0&#xff0c;形成8位一个字节的形式。&#xff08;将字符串转换为二进制&#xff0c;从前往后&#xff0c;每6位一取&#xff0c;…

查看mysql数据库的死锁日志_【MySQL】mysql死锁以及死锁日志分析

1.死锁的概念死锁&#xff1a;死锁一般是事务相互等待对方资源&#xff0c;最后形成环路造成的。对于死锁&#xff0c;数据库处理方法&#xff1a;牺牲一个连接&#xff0c;保证另外一个连接成功执行。发生死锁会返回ERROR&#xff1a;1213 错误提示&#xff0c;大部分的死锁In…

【转】二进制文件和ASCII文件有何区别

二进制文件和ASCII文件&#xff08;即文本文件&#xff09;的区别&#xff0c;对于和计算机亲近时间尚短的同学是个难题。本文用简单的例子&#xff0c;试图展示其中的道道&#xff0c;希望能对菜鸟们有些帮助。 1、一个例子&#xff1a;两种100000 有程序&#xff1a; #includ…

mysql优化和索引_mysql优化和索引

表的优化1.定长与变长分离如 int,char(4),time核心且常用字段&#xff0c;建成定长&#xff0c;放在一张表&#xff1b;而varchar,text,blob这种变长字段适合单放一张表&#xff0c;用主键与核心表关联。2.常用字段和不常用字段要分离3.在 1 对多需要关联统计的字段上&#xff…

【转】为什么不能使用字符流读取非文本的二进制文件?

读取文件 刚学Java的IO流部分时&#xff0c;书上说只能使用字节流去读取图片、视频等非文本二进制文件&#xff0c;不能使用字符流&#xff0c;否则文件会损坏。所以我就一直记住这一点了&#xff0c;但是为什么不能使用&#xff0c;这一直是我的一个疑惑。今天&#xff0c;我…

mysql更新一条语句_MySQL一条更新语句是如何执行的

一条查询语句是经过连接器 分析器 优化器 执行器等功能模块&#xff0c;最后到达存储引擎。image以下所说的都基于InnoDb引擎。当有一条记录需要更新的时候&#xff0c;InnoDB引擎会先把记录写到redo log里面&#xff0c;并更新内存&#xff0c;这个时候更新就算完成了。InnoDb…