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函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
Mar 30 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
python打造爬虫代理池过程解析
Aug 15 Python
opencv-python 读取图像并转换颜色空间实例
Dec 09 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 Python
python中的错误如何查看
Jul 08 Python
python破解同事的压缩包密码
Oct 14 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
python中使用asyncio实现异步IO实例分析
Feb 26 Python
python树莓派通过队列实现进程交互的程序分析
Jul 04 Python
利用python实时刷新基金估值(摸鱼小工具)
Sep 15 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语法(3)
2006/10/09 PHP
php数组添加与删除单元的常用函数实例分析
2015/02/16 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
php编程每天必学之验证码
2016/03/03 PHP
Laravel向公共模板赋值方法总结
2019/06/25 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
JavaScript面象对象设计
2008/04/28 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
javascript实现多张图片左右无缝滚动效果
2017/03/22 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
NodeJs 实现简单WebSocket即时通讯的示例代码
2019/08/05 NodeJs
vue实现路由监听和参数监听
2019/10/29 Javascript
Vue使用Three.js加载glTF模型的方法详解
2020/06/14 Javascript
python的描述符(descriptor)、装饰器(property)造成的一个无限递归问题分享
2014/07/09 Python
深入Python解释器理解Python中的字节码
2015/04/01 Python
举例讲解Python中装饰器的用法
2015/04/27 Python
python3利用venv配置虚拟环境及过程中的小问题小结
2018/08/01 Python
Python中extend和append的区别讲解
2019/01/24 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
Python定义函数时参数有默认值问题解决
2019/12/19 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
Numpy实现卷积神经网络(CNN)的示例
2020/10/09 Python
Bitiba意大利:在线宠物商店
2020/10/31 全球购物
高三历史教学反思
2014/01/09 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
会议欢迎标语
2014/06/30 职场文书
五一促销活动总结
2014/07/01 职场文书
2016年春季运动会通讯稿
2015/11/25 职场文书
推广普通话宣传标语口号
2015/12/26 职场文书
PyQt5爬取12306车票信息程序的实现
2021/05/14 Python
「魔导具师妲莉亚永不妥协~从今天开始的自由职人生活~」1、2卷发售宣传CM公开
2022/03/21 日漫