Bootstrap

udp接收发送数据程序以及注意事项

一.流程图

流程图

二.如何创建socket

在这里插入图片描述

三.服务器端代码

import socket
#1.创建套接字
udp_ser_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#2,绑定本地的相关信息,服务器端程序(比如一键报警程序),需要绑定
#两个参数,IP地址和端口号。** ip地址默认不写,因为一个网卡可以配多个IP地址,默认选系统中第一个
local_addr=('',2000)
#bind的参数是本地的相关信息
udp_ser_socket.bind(local_addr)

# 3. 等待接收对方发送的数据,1024表示本次接收的最大字节数
recv_data=udp_ser_socket.recvfrom(1024)

#4.显示接收到的数据
#对收到的数据解码
print(recv_data[0].decode('utf8'))
#客户端地址在recv_data[1]里,形式为(IP地址,客户端第一个sento随机开启的端口)
client_address=recv_data[1]

#5.发信息给客户端
udp_ser_socket.sendto('来自Ubuntu的信息'.encode(),client_address)

#6.关闭套接字
udp_ser_socket.close()

四.客户端代码

import socket
#1.初始化一个套接字
udp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 2. 发送数据到('192.168.242.128', 2000)
aim_address = ('192.168.242.128', 2000)
# sento函数两个参数,发送信息和目的地址。而自己的ip地址默认带着,自己的端口随机开启
udp_client_socket.sendto('来自windows的信息'.encode('utf8'), aim_address)

#3.接收服务器端发来的数据
recv_data = udp_client_socket.recvfrom(1024)
print(recv_data[0].decode('utf8'))

#4.关闭
udp_client_socket.close()

五.运行

在这里插入图片描述
ctrl alt T 调出终端,输入以上代码,IP要写目的地址,先运行服务器端,再运行客户端,因为需要UDP服务器端先绑定信息,并开始接收

六.注意事项

1.绑定bind 后查看本地端口的状态
netstat -an|grep 2000
请添加图片描述


2.如何杀被占用的进程

请添加图片描述


3.收发数据注意转换

在这里插入图片描述


4.ctrl +c

在这里插入图片描述


5.若写udp_ser_socket.sendto(b'Ubuntu'.,client_address) 引号里面就不应该带汉字
6.注意方法名别输错比如sento
7.UDP必须先一方先接收,另一方才能发送,且接收和发送是必须是成对的
8.写代码,IP地址一定要对应好,否则会出错
9.没启动服务器端的报错

请添加图片描述

;