UDP --- 用户数据报协议(User Datagram Protocol),是一个无连接的简单的面向数据报的运输层协议。

UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。

由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

开发环境:linux下pycharm3.5

测试:使用terminal终端测试

使用 nc -u ip 端口 进行测试客户端

使用 nc -lu ip 端口 进行测试服务器端

1.udp服务器端接受一次数据

import socket

# 设置服务器默认端口号

PORT = 9002

# 创建一个套接字socket对象,用于进行通讯

# socket.AF_INET 指明使用INET地址集,进行网间通讯

# socket.SOCK_DGRAM 指明使用数据协议,即使用传输层的udp协议

server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

address = ("", PORT)

# 为服务器绑定一个固定的地址,ip和端口

server_socket.bind(address)

# 接收客户端传来的数据 recvfrom接收客户端的数据,默认是阻塞的,直到有客户端传来数据

# recvfrom 参数的意义,表示最大能接收多少数据,单位是字节

# recvfrom返回值说明

# receive_data表示接受到的传来的数据,是bytes类型, receive_data.decode()解码,将bytes类型转换为字符串类型

# client_address 表示传来数据的客户端的身份信息,客户端的ip和端口,元组

receive_data, client = server_socket.recvfrom(1024)

print("来自客户端%s,发送的%s" % (client, receive_data.decode()))

# 不再接收数据的时候,将套接字socket关闭

server_socket.close()

测试:

2.udp服务端循环多次接受数据

import socket

PORT = 9002

server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

address = ("192.168.219.129", PORT)

server_socket.bind(address)

while True:

receive_data, client_address = server_socket.recvfrom(1024)

print("接收到了客户端 %s 传来的数据: %s" % (client_address, receive_data.decode()))

PS:遇到问题没人解答?需要Python学习资料?可以加点击下方链接自行获取

note.youdao.com/noteshare?id=2dce86d0c2588ae7c0a88bee34324d76

3.udp客户端接受一次数据

import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

msg = input("请输入要发送的内容:") # 字符串类型, 通过msg.encode() 编码 转换为bytes类型

server_address = ("127.0.0.1", 8000) # 接收方 服务器的ip地址和端口号

client_socket.sendto(msg.encode(), server_address)

client_socket.close()

4.udp客户端循环多次接受数据

import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

while True:

msg = input("请输入要发送的内容:")

server_address = ("192.168.79.127", 8000)

client_socket.sendto(msg.encode(), server_address)

5.udp服务器端循环多次接受发送数据

import socket

PORT = 8000

server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

address = ("", PORT)

server_socket.bind(address)

while True:

receive_data, client_address = server_socket.recvfrom(1024)

print("接收到了客户端d %s 传来的数据: %s" % (client_address, receive_data.decode()))

server_socket.sendto(receive_data, client_address)

6.udp客户端循环多次接受发送数据

import socket

client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

while True:

msg = input("请输入要发送的内容:")

server_address = ("", 8000)

client_socket.sendto(msg.encode(), server_address)

receive_data, sender_address = client_socket.recvfrom(1024)

print("接受到了发送方 %s 传来的数据: %s" % (sender_address, receive_data.decode()))

python udp 传输文件_python网络编程:UDP方式传输数据相关推荐

  1. udp 传输文件 java_Java 网络编程 之 UDP 文件传输

    服务器端 package com.udp; import java.io.File; import java.io.FileOutputStream; import java.io.IOExcepti ...

  2. python实现udp聊天室_python网络编程基础--socket的简介,以及使用socket来搭建一个简单的udp小程序...

    socket介绍: socket(简称套接字),是进程间通讯的一个工具,他能实现把数据从一方传输到另一方,完成不同电脑上进程之间的通讯,它好比数据的搬运工. socket应用: 不夸张来说,只要跟网络 ...

  3. unet网络python代码详解_python网络编程详解

    最近在看<UNIX网络编程 卷1>和<FREEBSD操作系统设计与实现>这两本书,我重点关注了TCP协议相关的内容,结合自己后台开发的经验,写下这篇文章,一方面是为了帮助有需要 ...

  4. python socket tcp客户端_python网络编程socketserver模块(实现TCP客户端/服务器)

    摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类 ...

  5. python socket 主动断开_Python网络编程tcp详解(基础篇十四)

    网络编程tcp 1 TCP详解 <1> tcp概述 TCP:英文全拼(Transmission Control Protocol)简称传输控制协议,它是一种面向连接的.可靠的.基于字节流的 ...

  6. python epoll多路复用技术_python网络编程——IO多路复用之epoll

    1.内核EPOLL模型讲解 此部分参考http://blog.csdn.net/mango_song/article/details/42643971博文并整理 首先我们来定义流的概念,一个流可以是文 ...

  7. python并发处理同一个文件_python并发编程(并发与并行,同步和异步,阻塞与非阻塞)...

    最近在学python的网络编程,学会了socket通信,并利用socket实现了一个具有用户验证功能,可以上传下载文件.可以实现命令行功能,创建和删除文件夹,可以实现的断点续传等功能的FTP服务器.但 ...

  8. python udp 大文件_Python:通过UDP发送大对象

    我是套接字编程的新手,最近为它挑选了Python.我有几个问题,我似乎无法找到明确的答案.Python:通过UDP发送大对象 我正在研究通过UDP发送数据,并写了一个简单的python脚本来做到这一点 ...

  9. python异步多线程框架_Python网络编程中的服务器架构(负载均衡、单线程、多线程和同步、异步等)。...

    这篇文章主要介绍服务器架构. 网络服务需要面对两个挑战.第一个问题是核心挑战,要编写出能够正确处理请求并构造合适响应的代码. 第二个挑战是如何将网络代码部署到随系统自动启动的Windows服务或者是U ...

最新文章

  1. linux内核路由反向检查,反向路径过滤——reverse path filter
  2. 每小时的定时任务变成了每分钟
  3. 1042:奇偶ASCII值判断
  4. 巧用 Protobuf 反射来优化代码,拒做 PB Boy
  5. java架构师进阶之独孤九剑:数据结构以及书籍推荐
  6. 嵌入式实时操作系统ucos-ii_「正点原子NANO STM32开发板资料连载」第三十六章 UCOSII 实验 1任务调度...
  7. python中sklearn中的Imputer模块改动
  8. 读取无线手柄数据_全透外形,优秀手感,双平台通吃:倍思Switch无线手柄
  9. HOWTO:如何在Redistributables视图中显示所有的水晶报表(Crystal Reports)Merge Module...
  10. 【ResNet翻译】Deep Residual Learning for Image Recognition
  11. linux修改文件或目录的所有者(chown)和用户组
  12. java抓取网页数据_Python抓取网页数据的终极办法 !
  13. python飞机大战类_500行代码,教你用python写个微信飞机大战
  14. 梦织未来Windows驱动编程 第03课 驱动的编程规范
  15. Python图片添加好看的中文字体并根据图片动态改变文字大小
  16. quartus13.0用原理图输入法设计8位全加器
  17. [Vue]缓存路由组件 activated()与deactivated()
  18. matlab图形黎曼几何,[转载]黎曼几何是篡改数学概念的几何
  19. 电子线路设计技巧7:UC3843A升压电路中振荡频率和占空比的确定方法
  20. (solved)[/usr/bin/python2: No module named pip]

热门文章

  1. linux 文件 跳板机_shell实现跳板机
  2. SpringMVC教程--json使用详解
  3. 【JavaSE_06】Java中的数组(array)
  4. python矩阵_Python 矩阵相关
  5. MyBatis入门和全局配置文件介绍
  6. 初学者先学python语音好吗_献给Python初学者 零基础学习Python能学会吗
  7. sqlite c++插入 timestamp_Dqlite,基于sqlite 高可用(HA)数据库
  8. android项目允许命令,android 项目 gradle 命令
  9. android wear换表盘,Ticwear系统使用watchmaker更换表盘教程
  10. java gui 读取文件夹_java Swing GUI 入门-文件读写器