Python基於socket編程(UDP版聊天)

説明:多臺電腦連同一網絡可通信。
有界面版待更;

一、UDP聊天(無界面)

1. 架构

    。。

2. 代碼

UDP服务端代码:

import socket

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

# 绑定固定端口
udp_socket.bind(('', 6665))

# 回射接收到的消息
while True:
    # 接收消息
    recv_data, remote_address = udp_socket.recvfrom(4096)
    print("接收到了%s发来的消息%s" % (str(remote_address), recv_data.decode()))

    # 回射
udp_socket.sendto(recv_data, remote_address)

客戶端代碼:

import socket

def send_message(udp_socket):
    # 输入的内容
    data = input("请输入您要发送的信息内容:")
    # ip
    ip = input("请输入对方的ip地址:")
    # 端口
    port = int(input("请输入端口:"))

    # 发送数据
    udp_socket.sendto(data.encode(), (ip, port))

def receive_message(udp_socket):
    recv_data, romote_address = udp_socket.recvfrom(4096)
    print("收到了来自%s的回信%s" % (str(romote_address), recv_data.decode()))

def main():
    # 创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    # 绑定固定端口
    udp_socket.bind(("", 6667))

    while True:
        # 输入指示
        command = input("请输入您要执行的功能 1.发送消息 2.接收消息 3.退出")
        # 发送数据
        if command == '1':
            send_message(udp_socket)
        # 接收数据
        elif command == '2':
            receive_message(udp_socket)
        # 退出
        elif command == '3':
            break
        else:
            print("输入有误,请重新输入")

if __name__ == '__main__':
    main()

3. 測試

運行服務器端 等待
在这里插入图片描述
運行客戶端
在这里插入图片描述
輸入1 選擇發送消息
在这里插入图片描述
向本機發送了消息
在这里插入图片描述
與同學連上同一個網絡
互相發送消息
在这里插入图片描述

二、UDP聊天(可视界面)

猜你喜欢

转载自blog.csdn.net/weixin_42248864/article/details/85032488