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 04 Python
Python3.x版本中新的字符串格式化方法
Apr 24 Python
python实现自动重启本程序的方法
Jul 09 Python
一篇文章快速了解Python的GIL
Jan 12 Python
python破解zip加密文件的方法
May 31 Python
python中正则表达式 re.findall 用法
Oct 23 Python
详解Python3注释知识点
Feb 19 Python
python实现简单图书管理系统
Nov 22 Python
Django 限制访问频率的思路详解
Dec 24 Python
python开发入门——列表生成式
Sep 03 Python
Python join()函数原理及使用方法
Nov 14 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 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
PHP Ajax实现页面无刷新发表评论
2007/01/02 PHP
php实现的Captcha验证码类实例
2014/09/22 PHP
PHP中Header使用的HTTP协议及常用方法小结
2014/11/04 PHP
PHP实现返回JSON和XML的类分享
2015/01/28 PHP
php结合正则批量抓取网页中邮箱地址
2015/05/19 PHP
php三元运算符知识汇总
2015/07/02 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
WordPress中限制非管理员用户在文章后只能评论一次
2015/12/31 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
js+css简单实现网页换肤效果
2015/12/29 Javascript
seajs实现强制刷新本地缓存的方法分析
2017/10/16 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
利用Decorator如何控制Koa路由详解
2018/06/26 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
vue异步axios获取的数据渲染到页面的方法
2018/08/09 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
Python素数检测实例分析
2015/06/15 Python
python抓取并保存html页面时乱码问题的解决方法
2016/07/01 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
Python异常处理例题整理
2019/07/07 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
安德玛加拿大官网:Under Armour加拿大
2019/10/02 全球购物
俄罗斯天然和有机产品、健康生活网上商店:Fitomarket.ru
2020/10/09 全球购物
Linux Interview Questions For software testers
2013/05/17 面试题
爱岗敬业演讲稿范文
2014/01/14 职场文书
考试违纪检讨书
2014/02/02 职场文书
fastdfs+nginx集群搭建的实现
2021/03/31 Servers
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis