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实现二分法算法实例
Feb 02 Python
Python实现程序的单一实例用法分析
Jun 03 Python
Python简单实现Base64编码和解码的方法
Apr 29 Python
Python内置函数—vars的具体使用方法
Dec 04 Python
Python实现的拟合二元一次函数功能示例【基于scipy模块】
May 15 Python
使用sklearn之LabelEncoder将Label标准化的方法
Jul 11 Python
python实现飞机大战微信小游戏
Mar 21 Python
修改默认的pip版本为对应python2.7的方法
Nov 06 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
Mar 24 Python
Python气泡提示与标签的实现
Apr 01 Python
Python 实现敏感目录扫描的示例代码
May 21 Python
Python基于os.environ从windows获取环境变量
Jun 09 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之PHP语法学习笔记1
2006/12/17 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
关于php循环跳出的问题
2013/07/01 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
PHP正则匹配日期和时间(时间戳转换)的实例代码
2016/12/14 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
JavaScript 调试器简介
2009/02/21 Javascript
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
kmock javascript 单元测试代码
2011/02/06 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
NodeJS创建基础应用并应用模板引擎
2016/04/12 NodeJs
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
详解webpack require.ensure与require AMD的区别
2017/12/13 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
vue封装可复用组件confirm,并绑定在vue原型上的示例
2019/10/31 Javascript
小程序使用分包的示例代码
2020/03/23 Javascript
jQuery插件实现图片轮播效果
2020/10/19 jQuery
js实现弹窗猜数字游戏
2020/11/26 Javascript
Python3字符串学习教程
2015/08/20 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
python实现简单tftp(基于udp协议)
2018/07/30 Python
python调用c++传递数组的实例
2019/02/13 Python
python字符串反转的四种方法详解
2019/12/02 Python
numpy按列连接两个维数不同的数组方式
2019/12/06 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
淘宝网店营销策划书
2014/01/11 职场文书
公司租车协议书
2015/01/29 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
困难补助申请报告
2015/05/19 职场文书
致运动员加油稿
2015/07/21 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
导游词之香港-太平山顶
2019/10/18 职场文书
nginx搭建图片服务器的过程详解(root和alias的区别)
2021/03/31 Servers