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内置函数之filter map reduce介绍
Nov 30 Python
Python实现的单向循环链表功能示例
Nov 10 Python
python 匹配url中是否存在IP地址的方法
Jun 04 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
使用python对文件中的数值进行累加的实例
Nov 28 Python
python 实现读取一个excel多个sheet表并合并的方法
Feb 12 Python
详解python算法之冒泡排序
Mar 05 Python
python 根据字典的键值进行排序的方法
Jul 24 Python
Flask 上传自定义头像的实例详解
Jan 09 Python
深入理解Tensorflow中的masking和padding
Feb 24 Python
python获取百度热榜链接的实例方法
Aug 25 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 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
德生S2000电路分析
2021/03/02 无线电
php 模拟POST提交的2种方法详解
2013/06/17 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
Yii 2.0中场景的使用教程
2017/06/02 PHP
日期函数扩展类Ver0.1.1
2006/09/07 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
JavaScript将一个数组插入到另一个数组的方法
2015/03/19 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
详解Vue项目引入CreateJS的方法(亲测可用)
2019/05/30 Javascript
通过vue写一个瀑布流插件代码实例
2019/09/07 Javascript
Python中AND、OR的一个使用小技巧
2015/02/18 Python
python中迭代器(iterator)用法实例分析
2015/04/29 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
matplotlib简介,安装和简单实例代码
2017/12/26 Python
python获取微信企业号打卡数据并生成windows计划任务
2019/04/30 Python
学习python分支结构
2019/05/17 Python
python调用pyaudio使用麦克风录制wav声音文件的教程
2019/06/26 Python
Python编程学习之如何判断3个数的大小
2019/08/07 Python
Django框架中间件定义与使用方法案例分析
2019/11/28 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
python 按钮点击关闭窗口的实现
2020/03/04 Python
Selenium 配置启动项参数的方法
2020/12/04 Python
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
Aosom西班牙:家具在线商店
2020/06/11 全球购物
超市端午节活动方案
2014/01/23 职场文书
教师节简报
2015/07/20 职场文书
Python实现列表拼接和去重的三种方式
2021/07/02 Python
提高系统的吞吐量解决数据库重复写入问题
2022/04/23 MySQL