Python语言用UDP发送、接收数据

1、下载网络试调助手:NetAssist

NetAssist,用于接受或者发送数据,与Python进行通信

Python语言用UDP发送、接收数据_第1张图片

2、UDP发送数据程序代码

import socket
def main():
	#1、创建一个udp套接字
    udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    #从键盘获取数据
    send_data=input("请输入发送内容:")
	#使用套接字收发数据
    udp_socket.sendto(send_data.encode("utf-8"),("127.0.0.1",8888))
	#5、关闭套接字
    udp_socket.close()

if __name__=="__main__":
	main()

send_data是从键盘接受的收据,必须是二进制的,如果只是单纯的数据变量的话,那就必须用

udp_socket.sendto(b"需要发送的内容",("127.0.0.1",8888))

Python语言用UDP发送、接收数据_第2张图片

如果要重复接收发送数据,那么就要用判断循环语句

import socket
def main():
	#1、创建一个udp套接字
    udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    while True:
        #从键盘获取数据
        send_data=input("请输入chongfu发送内容:")
        #判断结束
        if send_data=="exit":
            break
    	#使用套接字收发数据
        udp_socket.sendto(send_data.encode("GB2312"),("127.0.0.1",8888))
    	#5、关闭套接字
    udp_socket.close()

if __name__=="__main__":
	main()

3、UDP接收数据

from socket import *
def main():
	#1、创建一个udp套接字
    udp_socket=socket(AF_INET,SOCK_DGRAM)
    #2、绑定本地相关信息,如果不绑定,则随机分配
    local_addr=('',7788)#ip地址和端口号,IP不写表示本机任何一个ip
    udp_socket.bind(local_addr)
    #3、等待接收对方发送的数据
    recv_data=udp_socket.recvfrom(1024)#1024表示本次接收的最大字节
    #recv_data存储的是一个元组(发送方ip,Port)
    recv_msg=recv_data[0]
    send_addr=recv_data[1]
    #4、显示接收到的数据
    print("%s:%s"% (str(send_addr),recv_msg.decode("gbk")))
    udp_socket.close()

if __name__=="__main__":
	main()

测试结果

Python语言用UDP发送、接收数据_第3张图片

4、UDP案例

Python语言用UDP发送、接收数据_第4张图片

# -*- coding: utf-8 -*-
import socket

def send_msg(udp_socket):
    #获取要发送的内容
    dest_ip=input("输入对方IP:")
    dest_port=int(input("输入对方port:"))
    send_data=input("输入发送内容:")
    udp_socket.sendto(send_data.encode("gbk"),(dest_ip,dest_port))
    
def recv_msg(udp_socket):
    #接收数据
    recv_data=udp_socket.recvfrom(1024)
    print("%s:%s" % (str(recv_data[1]),recv_data[0].decode("gbk")))

def main():
    #创建套接字
    udp_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    #绑定信息
    udp_socket.bind(("",7788))
    #循环处理
    while True:
        print("---------聊天室----------")
        print("1:发送消息")
        print("2:接收消息")
        print("0:退出系统")
        op=input("请输入功能:")
        if op=="1":
            #发送
            send_msg(udp_socket)
        elif op=="2":
            #接收并显示
            recv_msg(udp_socket)
        elif op=="0":
            break
        else:
            print("输入有误!")
        
if __name__=="__main__":
    main()

 

你可能感兴趣的:(Python基础)