跳转至

UDP通讯

UDP_Server

import socket

# udp服务端
udp_server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_server.bind(('', 8080))

# recv()接收客户端发来的数据
# udp_client_data = udp_server.recv(1024).decode('utf-8')
# print(udp_client_data)

# recvfrom()接收一个元组
# 第一个元送是客户端发来的数据
# 第二个元素是一个包含客户端ip和port的元组
udp_client_data = udp_server.recvfrom(1024)
print(udp_client_data[0].decode('utf-8'), udp_client_data[1])

UDP_Client

import socket

# udp客户端
udp_client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
udp_client.sendto('我是udp客户端'.encode('utf-8'), ('localhost', 8080))

UDP_Server_Client

import socket


def send_data(udp_socket, udp_address):
    udp_socket.sendto(input('请输入要发送的内容:').encode('utf-8'), udp_address)


def recv_data(udp_socket):
    data, ip_port = udp_socket.recvfrom(1024)
    ip, port = ip_port
    host = ip + ':' + str(port)
    print(host + ':', data.decode('utf-8'))


if __name__ == '__main__':
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_address = ('localhost', 8081)
    udp_socket.bind(udp_address)
    while True:
        choice = input('1、发送\t2、接收\n')
        if choice == '1':
            send_data(udp_socket, udp_address)
        if choice == '2':
            recv_data(udp_socket)