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 multiprocessing模块中的Pipe管道使用实例
Apr 11 Python
Python语言实现机器学习的K-近邻算法
Jun 11 Python
Python中的groupby分组功能的实例代码
Jul 11 Python
Python 学习教程之networkx
Apr 15 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
May 28 Python
PIL对上传到Django的图片进行处理并保存的实例
Aug 07 Python
Python generator生成器和yield表达式详解
Aug 08 Python
使用python-pptx包批量修改ppt格式的实现
Feb 14 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
学会迭代器设计模式,帮你大幅提升python性能
Jan 03 Python
python生成随机数、随机字符、随机字符串
Apr 06 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
一首老MP3,致敬WAR3经典
2021/03/08 魔兽争霸
延长phpmyadmin登录时间的方法
2011/02/06 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
PHP使用PDO访问oracle数据库的步骤详解
2017/09/29 PHP
学习YUI.Ext 第四天--对话框Dialog的使用
2007/03/10 Javascript
Jquery ui css framework
2010/06/28 Javascript
写js时遇到的一些小问题
2010/12/06 Javascript
使用js获取地址栏中传递的值
2013/07/02 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
Javascript简单实现可拖动的div
2013/10/22 Javascript
Jquery中"$(document).ready(function(){ })"函数的使用详解
2013/12/30 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
js实现密码强度检验
2017/01/15 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
详解nodejs http请求相关总结
2019/03/31 NodeJs
Node.js+ELK日志规范的实现
2019/05/23 Javascript
python简单程序读取串口信息的方法
2015/03/13 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python使用回溯法子集树模板获取最长公共子序列(LCS)的方法
2017/09/08 Python
Python SQLite3简介
2018/02/22 Python
Python 使用matplotlib模块模拟掷骰子
2019/08/08 Python
Pytorch 多维数组运算过程的索引处理方式
2019/12/27 Python
keras 特征图可视化实例(中间层)
2020/01/24 Python
python中最小二乘法详细讲解
2021/02/19 Python
美国知名的家庭连锁百货商店:Boscov’s
2017/07/27 全球购物
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
面试后感谢信怎么写
2014/02/01 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
上海世博会口号
2014/06/19 职场文书
2014年环境卫生工作总结
2014/11/24 职场文书
贷款承诺书
2015/01/20 职场文书
2016党员入党决心书
2015/09/22 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript