这个程序比开源的稳定,画面也比较好,不过这个是粉丝专版,想要就关注我,废话少说,上代码
服务器:
import socket
import threading
# 创建一个socket对象
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server.bind(('127.0.0.1', 8888))
# 开始监听
server.listen(5)
print("服务器已启动,等待客户端连接...")
# 用于存储客户端连接
clients = []
def handle_client(client_socket):
while True:
try:
# 接收客户端发送的消息
msg = client_socket.recv(1024).decode('utf-8')
# 将消息广播给所有已连接的客户端
for client in clients:
client.send(msg.encode('utf-8'))
except Exception as e:
print(f"客户端断开连接:{e}")
clients.remove(client_socket)
client_socket.close()
break
while True:
# 接受客户端连接
client_socket, client_address = server.accept()
print(f"客户端{client_address}已连接")
clients.append(client_socket)
# 为每个客户端创建一个新的线程来处理消息
t = threading.Thread(target=handle_client, args=(client_socket,))
t.start()
客户端:
import socket
import threading
# 创建一个socket对象
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
client.connect(('127.0.0.1', 8888))
print("已连接到服务器")
def receive_msg():
while True:
try:
# 接收服务器广播的消息
msg = client.recv(1024).decode('utf-8')
print(msg)
except Exception as e:
print(f"与服务器断开连接:{e}")
client.close()
break
# 为接收消息创建一个新的线程
t = threading.Thread(target=receive_msg)
t.start()
while True:
# 向服务器发送消息
msg = input()
client.send(msg.encode('utf-8'))
注意事项
- 在运行客户端代码之前,请确保服务器端代码已经启动并正在监听客户端连接。
- 由于这个聊天程序是基于TCP协议实现的,因此它是可靠的,可以保证消息的有序传输。 但是,如果网络不稳定,可能会导致部分消息丢失或延迟。 为了提高稳定性,可以考虑使用更高级的网络编程库,如Twisted或asyncio。