以下是一个基于UDP协议的简单聊天程序的示例,包括服务器和客户端。客户端使用Python的Tkinter库实现图形界面。

服务器端代码(server.py):

import socket

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

# 绑定服务器地址和端口
server_address = ('localhost', 12345)
server_socket.bind(server_address)

# 存储客户端地址的字典
clients = {}

# 接收客户端消息并广播给其他客户端
while True:
    data, client_address = server_socket.recvfrom(1024)
    message = data.decode()
    
    # 判断是否为新客户端连接
    if client_address not in clients:
        clients[client_address] = True
        print('New client connected:', client_address)
    
    # 广播消息给其他客户端
    for address in clients:
        if address != client_address:
            server_socket.sendto(data, address)

# 关闭服务器套接字
server_socket.close()

客户端代码(client.py):

import socket
import threading
import tkinter as tk

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

# 获取本地IP地址
client_address = ('localhost', 0)
client_socket.bind(client_address)
client_address = client_socket.getsockname()

# 连接服务器
server_address = ('localhost', 12345)

# 发送消息到服务器
def send_message():
    message = entry.get()
    client_socket.sendto(message.encode(), server_address)
    entry.delete(0, tk.END)

# 接收服务器消息并显示在聊天窗口
def receive_message():
    while True:
        data, address = client_socket.recvfrom(1024)
        message = data.decode()
        text.insert(tk.END, message + '\n')

# 创建图形界面
root = tk.Tk()
root.title('Chat Program')
root.geometry('400x300')

# 聊天窗口
text = tk.Text(root)
text.pack()

# 消息输入框
entry = tk.Entry(root)
entry.pack()

# 发送按钮
button = tk.Button(root, text='Send', command=send_message)
button.pack()

# 创建接收消息的线程
receive_thread = threading.Thread(target=receive_message)
receive_thread.start()

# 运行图形界面
root.mainloop()

# 关闭客户端套接字
client_socket.close()

请根据需要修改服务器地址、端口和客户端地址等参数。运行服务器端代码和多个客户端代码后,每个客户端即可在图形界面中输入消息并发送给其他客户端。其他客户端接收到消息后,将会显示在聊天窗口中

基于 UDP协议 实现一简单的聊天程序实现网上聊天包括服务器和客户端。要求:支持多人聊天。客户端具有图形化用户界面

原文地址: https://www.cveoy.top/t/topic/iUTt 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录