python实现一个简单的udp通信的示例代码


Posted in Python onFebruary 01, 2019

什么是 Socket?

Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

python创建套接字

socket.socket([family[, type[, proto]]])
参数解析:
family: AF_UNIX(适用跨机通信) 或 AF_INET(IPv4)(适用本机通信)
type: 套接字类型,可以根据是面向连接的还是非连接分为 SOCK_STREAM(TCP) 或 SOCK_DGRAM(UDP)
protocol: 一般不填默认为0.

客户端代码:udp_client.py

第一步:导入socket模块和创建套接字

import socket
u_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

第二步:开始通信

# s.getsockname()  返回套接字自己的地址。
print("%s:%s 开始工作" %u_client.getsockname())

while True:
  # 发送数据
  data = input("input>>>")
  u_client.sendto(data.encode('utf-8'), ("localhost", 8887)) 


  # 退出系统操作
  if data == 'exit':
    break

  # 接收数据
  data, addr = u_client.recvfrom(1024)
  print("客户端接收信息的来源: %s:%s" %addr)
  print("客户端接收信息的数据: %s" %data.decode('utf-8'))

第三步:关闭套接字

u_client.close()

服务端代码:udp_server.py

第一步:导入socket模块和创建套接字

import socket
u_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

第二步:开始通信

# 绑定端口
u_server.bind(('localhost', 8887))

print("%s:%s 开始工作" %u_server.getsockname())

while True:
  # 接收数据
  # u_server.recvfrom() 接收UDP数据,返回值是(data,address)
  data, addr = u_server.recvfrom(1024)
  print("接收信息的来源: %s:%s" %addr)
  print("接收信息的数据: %s" %data.decode('utf-8'))

  # 发送原地址数据
  send_data = ("接收到数据:"+data.decode('utf-8')+" --Thanks").encode('utf-8')
  u_server.sendto(send_data, addr)

  # 退出系统操作
  if(data.decode('utf-8') == 'exit'):
    break

第三步:关闭套接字

u_server.close()

测试结果

新建两个cmd窗口,分为执行客户端和服务端的代码

python实现一个简单的udp通信的示例代码

python实现一个简单的udp通信的示例代码

python实现一个简单的udp通信的示例代码

python实现一个简单的udp通信的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获取android设备的GPS信息脚本分享
Mar 06 Python
Python的Flask框架应用程序实现使用QQ账号登录的方法
Jun 07 Python
python django事务transaction源码分析详解
Mar 17 Python
Odoo中如何生成唯一不重复的序列号详解
Feb 10 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
May 30 Python
python 实现将txt文件多行合并为一行并将中间的空格去掉方法
Dec 20 Python
pyqt5与matplotlib的完美结合实例
Jun 21 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
500行代码使用python写个微信小游戏飞机大战游戏
Oct 16 Python
Python+OpenCV实现旋转文本校正方式
Jan 09 Python
利用Python如何实时检测自身内存占用
May 09 Python
Python读取二进制文件代码方法解析
Jun 22 Python
Python读取指定日期邮件的实例
Feb 01 #Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 #Python
对pandas通过索引提取dataframe的行方法详解
Feb 01 #Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 #Python
深入理解Python异常处理的哲学
Feb 01 #Python
python for 循环获取index索引的方法
Feb 01 #Python
对python For 循环的三种遍历方式解析
Feb 01 #Python
You might like
PHP+DBM的同学录程序(2)
2006/10/09 PHP
如何删除多级目录
2006/10/09 PHP
php 验证码制作(网树注释思想)
2009/07/20 PHP
浅析PHP微信支付通知的处理方式
2014/05/25 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
PHP使用OB缓存实现静态化功能示例
2019/03/23 PHP
extJs 下拉框联动实现代码
2010/04/09 Javascript
Jquery 模板数据绑定插件的使用方法详解
2013/07/08 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
2016/11/21 Javascript
JavaScript实现汉字转换为拼音的库文件示例
2016/12/22 Javascript
Vue官方文档梳理之全局配置
2017/11/22 Javascript
Vue下的国际化处理方法
2017/12/18 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
Python画图高斯分布的示例
2019/07/10 Python
使用Python函数进行模块化的实现
2019/11/15 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
2020/02/25 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
python如何从键盘获取输入实例
2020/06/18 Python
Python基于staticmethod装饰器标示静态方法
2020/10/17 Python
CSS3系列之3D制作方法案例
2017/08/14 HTML / CSS
Luxplus瑞典:香水和美容护理折扣
2018/01/28 全球购物
学习党课思想汇报
2013/12/29 职场文书
幼儿园教师培训方案
2014/02/04 职场文书
快餐公司创业计划书
2014/04/29 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
2014年军人思想汇报范文
2014/10/12 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
Python基本数据类型之字符串str
2021/07/21 Python
Python自动化实战之接口请求的实现
2022/05/30 Python