Python 技术篇-socket套接字实现服务器客户端消息传递,UDP实现
时间:2022-07-25
本文章向大家介绍Python 技术篇-socket套接字实现服务器客户端消息传递,UDP实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
上一篇:Python 技术篇-socket套接字实现两个窗口间消息传递,TCP实现 本篇介绍用 UDP 来实现。
socket 套接字实现服务器客户端消息传递有 UDP 和 TCP 两种形式。他们最主要的区别是:TCP 需要建立客户端与服务器的连接,UDP 不需要
建立 UDP 连接的 socket 对象:socket(AF_INET, SOCK_DGRAM)
。
UDP 接收数据:recvfrom(buf)
,返回值是客户端传的数据和客户端的地址,参数 buf 是缓冲区大小,比如 8 的话相当于 2 个中文,8 个英文或数字,一般设置 1024。
UDP 发送数据:sendto(data, addr)
,data 是字节 bytes 类型的数据,addr 是形如 (host, port)
端口号加地址的元组类型数据。
服务器端代码:
from socket import *
host = "" # ip,服务器空ip代表本地;
port = 7777 # 端口号;
addr = (host, port)
Socket_UDP = socket(AF_INET, SOCK_DGRAM) # 创建socket对象;
Socket_UDP.bind(addr) # 服务器用bind绑定本地,也算是服务器的标识;
print("Waitting...")
while True:
data, addr = Socket_UDP.recvfrom(128) # 缓冲区大小可以设置大一点
data = str(data, encoding = 'utf-8') # 将接收的字节类型数据转化为字符串类型;
print("来自" + str(addr) + "发来的消息: " + data)
if data == "exit":
break
Socket_UDP.close() # 关闭socket对象;
客户端代码:
from socket import *
host = "127.0.0.1" # 服务器的地址,因为服务器也在本地,所以填本地地址了
port = 7777 # 端口号要与服务器一致
addr = (host, port)
Socket_UDP = socket(AF_INET, SOCK_DGRAM)
while True:
data = input("向服务器发送消息: ")
data = bytes(data, encoding = 'utf-8') # 因为input返回的是字符串类型的数据,data需要字节类型的数据
Socket_UDP.sendto(data, addr)
if data == "exit":
break
Socket_UDP.close()
服务器窗口截图:
客户端窗口截图:
- Linux下MySQL的彻底卸载和安装配置字符集
- Codeforces 626F Group Projects(滚动数组+差分dp)
- Vijos P1103 校门外的树【线段树,模拟】
- BZOJ 1061: [Noi2008]志愿者招募【单纯形裸题】
- SQL vs NoSQL:如何选择?
- 线性规划之单纯形法【超详解+图解】
- NodeJS 应用仓库钓鱼
- Codeforces 626D Jerry's Protest(暴力枚举+概率)
- CodeM美团点评编程大赛初赛B轮 黑白树【DFS深搜+暴力】
- Uva 10339 - Watching Watches【数论,暴力】
- Codeforces 626E Simple Skewness(暴力枚举+二分)
- 如何启用Windows 10客户端Hyper-V
- 51Nod 1632 B君的连通(递归,快速幂)
- 51Nod 1046 A^B Mod C(日常复习快速幂)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 如何防止网站被扒的解决方法!
- 【python-面试题53-循环排序】寻找缺失的数
- 【python-leetcode42-区间合并】区间列表的交集
- 【python-leetcode202-快慢指针】快乐数
- vuejs之结合使用vue+element-ui搭建后台管理页面
- 【python-leetcode142-快慢指针】环形链表2
- 【python-leetcode141-快慢指针】环形链表
- python-快速排序
- 【python-leetcode75-双指针】颜色分类
- 【python-leetcode713-双指针】乘积小于k的子数组
- vuejs之构建简易音乐播放器
- vuejs小例子之天气查询
- 【python-leetcode259-双指针】三个数的最小和
- vuejs之vue.js+axios结合使用
- c语言之指向指针的指针