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实现class对象转换成json/字典的方法
Mar 11 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
Sanic框架安装与简单入门示例
Jul 16 Python
利用nohup来开启python文件的方法
Jan 14 Python
Python实现统计英文文章词频的方法分析
Jan 28 Python
PyQt5通信机制 信号与槽详解
Aug 07 Python
Python常用数据类型之间的转换总结
Sep 06 Python
Window10下python3.7 安装与卸载教程图解
Sep 30 Python
python通过对字典的排序,对json字段进行排序的实例
Feb 27 Python
Python通过Pillow实现图片对比
Apr 29 Python
Python3 用什么IDE开发工具比较好
Nov 28 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
Nov 28 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
第九节--绑定
2006/11/16 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
JavaScript和JQuery的鼠标mouse事件冒泡处理
2015/06/19 Javascript
原生JavaScript实现Ajax的方法
2016/04/07 Javascript
js 求时间差的实现代码
2016/04/26 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
基于require.js的使用(实例讲解)
2017/09/07 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
Vue源码学习之初始化模块init.js解析
2017/11/02 Javascript
vue 动态修改a标签的样式的方法
2018/01/18 Javascript
JS实现遍历不规则多维数组的方法
2018/03/21 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
js实现小星星游戏
2020/03/23 Javascript
微信小程序接入vant Weapp组件的详细步骤
2020/10/28 Javascript
Python3内置模块random随机方法小结
2019/07/13 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
美国受信赖的教育产品供应商:Nest Learning
2018/06/14 全球购物
享受加州生活方式的时尚舒适:XCVI
2018/07/09 全球购物
DNA测试:Orig3n
2019/03/01 全球购物
乌克兰电子和家用电器商店:Foxtrot
2019/07/23 全球购物
轻金属冶金专业毕业生自荐信
2013/11/02 职场文书
通知格式
2015/04/27 职场文书
vue完美实现el-table列宽自适应
2021/05/08 Vue.js
Python实现简繁体转换
2021/06/07 Python
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL
CentOS MySql8 远程连接实战
2022/04/19 MySQL
利用nginx搭建RTMP视频点播、直播、HLS服务器
2022/05/25 Servers
多线程Spring通过@Scheduled实现定时任务
2022/05/25 Java/Android