python网络编程 使用UDP、TCP协议收发信息详解


Posted in Python onAugust 29, 2019

UDP

UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。 UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内。 UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方。

udp通信模型中,在通信开始之前,不需要建立相关的链接,只需要发送数据即可,类似于生活中,"写信"。

客户端:

from socket import socket,AF_INET,SOCK_DGRAM
# 创建套接字,SOCK_DGRAM使用udp协议
udp = socket(AF_INET, SOCK_DGRAM)
# 目的端口和ip
ip = "127.0.0.1"
port = 8080
# 循环从键盘输入发送消息
while True:
  data = input("请输入发送的数据:")
  udp.sendto(data.encode("utf-8"), (ip, port))

服务端:

from socket import socket, AF_INET, SOCK_DGRAM
udp = socket(AF_INET, SOCK_DGRAM)
# 绑定端口,服务端必须要绑定端口
udp.bind(("", 8080))
while True:
  # 接受数据,每次接受1024字节
  recvData = udp.recvfrom(1024)
  # 拆包
  data, info = recvData
  # 打印
  print("[%s]:%s" % (info, data.decode("utf-8")))

TCP

udp通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中,"打电话"。

客户端:

from socket import socket,AF_INET,SOCK_STREAM
# 创建套接字,SOCK_STREAM表示使用tcp协议
clientSocket = socket(AF_INET,SOCK_STREAM)
# 连接服务器
clientSocket.connect(("127.0.0.1",8080))
# 发送数据
while True:
  s = input("请输入要发送的数据:")
  clientSocket.send(s.encode("utf-8"))

服务端:

from socket import socket, AF_INET, SOCK_STREAM
tcp = socket(AF_INET, SOCK_STREAM)
# 绑定端口
tcp.bind(("", 8080))
# listen的参数代表可建立socket连接的最大个数 windows,mac 此连接参数有效 Linux 此连接参数无效,默认最大
tcp.listen()
# 有新的客户端连接时,
# clientSocket表示一个新的套接字
# clientInfo 表示新客户端的ip及端口号
while True:
  clientSocket, clientInfo = tcp.accept()
  try:
    while True:
      recvData = clientSocket.recv(1024)
      # 如果接受的的数据为空就退出
      if not recvData:
        break
      print("%s:%s" % (str(clientInfo), recvData.decode("utf-8")))
  finally:
    clientSocket.close()

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

Python 相关文章推荐
python将字符串转换成数组的方法
Apr 29 Python
Python中关于使用模块的基础知识
May 24 Python
Python和C/C++交互的几种方法总结
May 11 Python
Python实现数据库并行读取和写入实例
Jun 09 Python
Python实现的双色球生成功能示例
Dec 18 Python
Python模块文件结构代码详解
Feb 03 Python
面向初学者的Python编辑器Mu
Oct 08 Python
Python Django给admin添加Action的方法实例详解
Apr 29 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
在交互式环境中执行Python程序过程详解
Jul 12 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
Python基于mediainfo批量重命名图片文件
Dec 29 Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 #Python
python实现两个文件夹的同步
Aug 29 #Python
使用OpenCV实现仿射变换—旋转功能
Aug 29 #Python
python+rsync精确同步指定格式文件
Aug 29 #Python
django-rest-swagger对API接口注释的方法
Aug 29 #Python
Python3视频转字符动画的实例代码
Aug 29 #Python
scikit-learn线性回归,多元回归,多项式回归的实现
Aug 29 #Python
You might like
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
一个简易需要注册的留言版程序
2006/10/09 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
33道php常见面试题及答案
2015/07/06 PHP
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
JS中数组Array的用法示例介绍
2014/02/20 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
JS函数this的用法实例分析
2015/02/05 Javascript
使用Chrome浏览器调试AngularJS应用的方法
2015/06/18 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
关于function类中定义变量this的简单说明
2016/05/28 Javascript
js实现本地图片文件拖拽效果
2017/07/18 Javascript
Vue Cli与BootStrap结合实现表格分页功能
2017/08/18 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
关于node-bindings无法在Electron中使用的解决办法
2018/12/18 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
Python网络编程 Python套接字编程
2017/09/13 Python
python中实现精确的浮点数运算详解
2017/11/02 Python
python中树与树的表示知识点总结
2019/09/14 Python
python算的上脚本语言吗
2020/06/22 Python
用python获取txt文件中关键字的数量
2020/12/24 Python
HTML5跳转小程序wx-open-launch-weapp的示例代码
2020/07/16 HTML / CSS
团工委书记自荐书范文
2013/12/17 职场文书
社会保险接收函
2014/01/12 职场文书
项目合作意向书范本
2014/04/01 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
道路施工安全责任书
2014/07/24 职场文书
标准版离职证明书
2014/09/12 职场文书
2014幼儿园中班工作总结
2014/11/10 职场文书
2015年村党支部工作总结
2015/04/30 职场文书