请帮我用python写一个简易的网络聊天室
时间: 2023-06-03 21:06:19 浏览: 51
好的,以下是一个简单的Python网络聊天室示例:
服务端代码:
```python
import socket
# 创建一个TCP Socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口号
server_socket.bind(('127.0.0.1', 8888))
# 监听
server_socket.listen()
print('聊天室已启动!')
# 记录所有连接
clients = []
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
# 将连接客户端添加到列表
clients.append(client_socket)
# 打印连接信息
print('Client %s:%s connected.' % client_address)
# 向所有客户端发送欢迎消息
for client in clients:
client.send(('Welcome to the chat room, %s!\n' % client_address[0]).encode())
# 处理客户端消息
while True:
# 接收客户端消息
try:
client_message = client_socket.recv(1024).decode()
except ConnectionResetError:
# 客户端断开连接
clients.remove(client_socket)
print('Client %s:%s disconnected.' % client_address)
break
# 将接收到的消息发送给所有客户端
for client in clients:
client.send(('[%s:%s] %s' % (client_address[0], client_address[1], client_message)).encode())
```
客户端代码:
```python
import socket
import threading
# 创建一个TCP Socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务端
client_socket.connect(('127.0.0.1', 8888))
# 接收服务端消息
def receive():
while True:
try:
message = client_socket.recv(1024).decode()
print(message)
except ConnectionResetError:
# 服务端断开连接
print('The server is not available.')
client_socket.close()
break
# 发送消息
def send():
while True:
message = input()
client_socket.send(message.encode())
# 启动接收消息和发送消息的线程
receive_thread = threading.Thread(target=receive)
receive_thread.start()
send_thread = threading.Thread(target=send)
send_thread.start()
```
此聊天室基于TCP协议实现,能够支持多个客户端同时连接并交互。但是,考虑到网络安全等因素,需要更多的代码和安全机制来确保聊天室的有效性和安全性。