python网络编程之UDP方式传输数据
2017-08-15 23:54
826 查看
UDP --- 用户数据报协议(User Datagram Protocol),是一个无连接的简单的面向数据报的运输层协议。
UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。
开发环境:linux下pycharm3.5
测试:使用terminal终端测试
使用 nc -u ip 端口 进行测试客户端
使用 nc -lu ip 端口 进行测试服务器端
1.udp服务器端接受一次数据
测试:
2.udp服务端循环多次接受数据
3.udp客户端接受一次数据
4.udp客户端循环多次接受数据
5.udp服务器端循环多次接受发送数据
6.udp客户端循环多次接受发送数据
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()))
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("接收到了客户端 %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天天进步(5)--网络编程之数据传输UDP
- python网络编程之数据传输UDP实例分析
- 网络编程 UDP TCP传输数据
- android网络编程之json传输数据以及解析方式
- C#网络编程,传输数据的3种方式
- 【网络编程】UDP数据传输及文件传输实验
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- 网络编程—UDP协议传输接受与发送数据
- C#网络编程,传输数据的3种方式
- 【23】网络编程1_UDP数据传输,TCP数据传输
- python天天进步(6)--网络编程之数据传输TCP
- 树莓派python,tornado,返回json数据代码,初级网络编程。
- 【Python】 Python网络编程概论 + UDP初步
- Linux下Socket网络编程,文件传输,数据传输的C语言例子
- Linux网络编程-UDP接收数据丢包解决方案
- Java基础知识强化之网络编程笔记17:Android网络通信之 使用Http的Post方式读取网络数据(基于HTTP通信技术)
- RTSP流媒体数据传输的两种方式(TCP和UDP)
- linux c 笔记 网络编程(三)..套接字数据传输