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的randrange()方法使用教程
May 15 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
python人民币小写转大写辅助工具
Jun 20 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
python自动化测试之如何解析excel文件
Jun 27 Python
django drf框架中的user验证以及JWT拓展的介绍
Aug 12 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
Python 绘制可视化折线图
Jul 22 Python
python raise的基本使用
Sep 10 Python
python判断变量是否为列表的方法
Sep 17 Python
用python爬虫批量下载pdf的实现
Dec 01 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
thinkphp模板继承实例简述
2014/11/26 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
ThinkPHP实现登录退出功能
2017/06/29 PHP
jquery 实现的全选和反选
2009/04/15 Javascript
js如何改变文章的字体大小
2016/01/08 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
基于jQuery实现仿QQ空间送礼物功能代码
2016/05/24 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
Bootstrap table右键功能实现方法
2017/02/20 Javascript
JavaScript中var、let、const区别浅析
2018/06/24 Javascript
React中如何引入Angular组件详解
2018/08/09 Javascript
Vue实现的父组件向子组件传值功能示例
2019/01/19 Javascript
解决layui富文本编辑器图片上传无法回显的问题
2019/09/18 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
[46:20]CHAOS vs Alliacne 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
对于Python中RawString的理解介绍
2016/07/07 Python
浅谈python中列表、字符串、字典的常用操作
2017/09/19 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
啥是佩奇?使用Python自动绘画小猪佩奇的代码实例
2019/02/20 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
2019/06/17 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
python列表推导式操作解析
2019/11/26 Python
浅谈anaconda python 版本对应关系
2020/10/07 Python
python语言time库和datetime库基本使用详解
2020/12/25 Python
俄罗斯披萨、寿司和面食送货到家服务:2 Берега
2019/12/15 全球购物
怎么写有吸引力的自荐信
2013/11/17 职场文书
求职信范文怎么写
2014/01/29 职场文书
教师简历自我评价
2014/02/03 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
简单租房协议书
2014/10/21 职场文书
幼儿园家长反馈意见
2015/06/03 职场文书
2016年党建工作简报
2015/11/26 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python