python语言实现简易的聊天室功能代码
时间: 2023-07-23 14:26:41 浏览: 48
以下是使用Python Socket编写的简易聊天室代码示例:
服务端代码:
```python
import socket
import threading
# 设置主机和端口号
HOST = 'localhost'
PORT = 8000
# 创建socket对象
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定主机和端口号
server.bind((HOST, PORT))
# 设置最大连接数
server.listen(5)
# 存储所有连接的客户端
clients = []
def broadcast(message):
# 广播消息给所有客户端
for client in clients:
client.send(message)
def handle_client(client):
while True:
try:
# 接收来自客户端的消息
message = client.recv(1024)
# 广播消息给所有客户端
broadcast(message)
except:
# 发生错误时移除客户端连接
index = clients.index(client)
clients.remove(client)
client.close()
broadcast(f'客户端{index}已下线'.encode('utf-8'))
break
def start_server():
while True:
# 等待客户端连接
client, address = server.accept()
clients.append(client)
print(f'客户端{address}已连接')
# 发送欢迎消息给客户端
client.send('欢迎加入聊天室!'.encode('utf-8'))
# 开启线程处理客户端连接
thread = threading.Thread(target=handle_client, args=(client,))
thread.start()
if __name__ == '__main__':
print('聊天室服务已启动...')
start_server()
```
客户端代码:
```python
import socket
import threading
# 设置主机和端口号
HOST = 'localhost'
PORT = 8000
# 创建socket对象
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
client.connect((HOST, PORT))
def receive():
while True:
try:
# 接收来自服务器的消息
message = client.recv(1024)
print(message.decode('utf-8'))
except:
# 发生错误时关闭客户端连接
client.close()
break
def send():
while True:
# 发送消息给服务器
message = input()
client.send(message.encode('utf-8'))
if __name__ == '__main__':
# 开启线程接收服务器消息
receive_thread = threading.Thread(target=receive)
receive_thread.start()
# 开启线程发送消息给服务器
send_thread = threading.Thread(target=send)
send_thread.start()
```
使用以上代码,你可以在本地启动一个简易的聊天室服务端,并在多个客户端之间进行通信。