Python 高级编程1 网络编程 udp

tcp 和 udp的区别:
1,tcp传输数据使用字节流的方式传输,udp是数据报
2,tcp会产生粘包现象,udp不会
3,tcp对网络条件要求高,udp更适合实时传输
4,tcp编程可以保证传输的可靠性,udp则不保证
5,tcp使用listen accpet, udp不需要
6,tcp使用recv send
 udp使用recvfrom sendto

encode编码 decode 解码

udp特点
UDP套接口是无连接的、不可靠的数据报协议;既然他不可靠为什么还要用呢?其一:当应用程序使用广播或多播时只能使用UDP协议;其二:由于他是无连接的,所以速度快。因为UDP套接口是无连接的,如果一方的数据报丢失,那另一方将无限等待,解决办法是设置一个超时。

建立UDP套接口时socket函数的第二个参数应该是SOCK_DGRAM,说明是建立一个UDP套接口;由于UDP是无连接的,所以服务器端并不需要listen或accept函数。

这里写图片描述
udp 客户端

步骤
1、创建套接字
2、接受/发送数据
3、关闭套接字

#导入socket包
import socket  

#  创建套接字
udp_socket_client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#  输入服务端地址
user_ip = input('请输入对方ip:')
user_port = int(input('请输入对方port:'))

#  绑定本机端口
udp_socket_client.bind(('',8081))

#  发送数据
send_data = 'hello world'
udp_socket_client.sendto(send_data.encode('utf-8'),(user_ip,user_port))

# 接收信息
data_info,ip_info = udp_socket_client.recvfrom(1024)
print(data_info.decode('utf-8'))  # 解码
print(ip_info)

# 关闭套接字
udp_socket_client.close()

udp 服务端

import socket

udp_socket_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM
 #创建一个socket,SOCK_DGRAM表示UDP

udp_socket_server.bind(('', 1280))                        
#绑定IP地址及端口

while True:
    data_info = udp_socket_server.recvfrom(1024) 
      #获得数据和客户端的地址与端口,一次最大接收1024字节
    print('接收到的数据为',data_info.decode('utf-8'))
    udp_socket_server.sendto(data_info.encode('utf-8'))
    #将数据变成大写送回客户端
    udp_socket_server.close()

猜你喜欢

转载自blog.csdn.net/qq_41208705/article/details/81777674