基于 UDP协议 实现一简单的聊天程序实现网上聊天包括服务器和客户端。要求:支持多人聊天。客户端具有图形化用户界面
以下是一个基于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()
请根据需要修改服务器地址、端口和客户端地址等参数。运行服务器端代码和多个客户端代码后,每个客户端即可在图形界面中输入消息并发送给其他客户端。其他客户端接收到消息后,将会显示在聊天窗口中
原文地址: https://www.cveoy.top/t/topic/iUTt 著作权归作者所有。请勿转载和采集!