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-基础-入门 简介
Aug 09 Python
《Python之禅》中对于Python编程过程中的一些建议
Apr 03 Python
Python实现遍历目录的方法【测试可用】
Mar 22 Python
Python实现的文本简单可逆加密算法示例
May 18 Python
Python操作使用MySQL数据库的实例代码
May 25 Python
python中numpy的矩阵、多维数组的用法
Feb 05 Python
Python3实现定时任务的四种方式
Jun 03 Python
Python中私有属性的定义方式
Mar 05 Python
python实现贪吃蛇游戏源码
Mar 21 Python
python else语句在循环中的运用详解
Jul 06 Python
用Python创建简易网站图文教程
Jun 11 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
让这部DC动画新作刷新你的认知
2020/03/03 欧美动漫
一个程序下载的管理程序(三)
2006/10/09 PHP
php HtmlReplace输入过滤安全函数
2010/07/03 PHP
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
typecho插件编写教程(三):保存配置
2015/05/28 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
服务器迁移php版本不同可能诱发的问题
2015/12/22 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
2016/09/21 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
php让json_encode不自动转义斜杠“/”的方法
2020/04/27 PHP
jQuery 处理网页内容的实现代码
2010/02/15 Javascript
jquery中的事件处理详细介绍
2013/06/24 Javascript
jquery 模板的应用示例
2013/11/12 Javascript
js日期、星座的级联显示代码
2014/01/23 Javascript
jQuery is()函数用法3例
2014/05/06 Javascript
JavaScript动态插入CSS的方法
2015/12/10 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
js简易版购物车功能
2017/06/17 Javascript
Vue中的$set的使用实例代码
2018/10/08 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
vue实现购物车的小练习
2020/12/21 Vue.js
Python使用正则表达式获取网页中所需要的信息
2018/01/29 Python
python实现推箱子游戏
2020/03/25 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
利用html5 canvas破解简单验证码及getImageData接口应用
2013/01/25 HTML / CSS
Kaufmann Mercantile官网:家居装饰、配件、户外及更多
2018/09/28 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
剪枝的学问教学反思
2014/02/07 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
普通党员整改措施
2014/10/24 职场文书
2014年应急工作总结
2014/12/11 职场文书
工作自我评价范文
2015/03/05 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript