linux python构建聊天室
时间: 2023-07-20 10:40:38 浏览: 51
要在 Linux 上使用 Python 构建聊天室,你可以使用 Python 的 Socket 模块。以下是一个简单的聊天室示例代码:
```python
import socket
import threading
# 客户端处理函数
def handle_client(client_socket, client_address):
while True:
try:
# 接收客户端消息
message = client_socket.recv(1024).decode("utf-8")
if message:
# 将消息发送给所有客户端
broadcast_message(message, client_address)
else:
remove_client(client_socket)
break
except:
remove_client(client_socket)
break
# 将消息广播给所有客户端
def broadcast_message(message, sender_address):
for client in clients:
if client != sender_address:
client.sendall(message.encode("utf-8"))
# 移除客户端
def remove_client(client_socket):
if client_socket in clients:
clients.remove(client_socket)
client_socket.close()
# 服务器主函数
def server():
# 创建服务器 socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定端口和 IP
server_socket.bind(("0.0.0.0", 8000))
# 开始监听
server_socket.listen(5)
while True:
# 接收客户端连接
client_socket, client_address = server_socket.accept()
# 添加客户端到列表中
clients.append(client_socket)
# 创建新线程处理客户端请求
client_thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
client_thread.start()
# 客户端主函数
def client():
# 创建客户端 socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect(("127.0.0.1", 8000))
while True:
# 输入消息并发送给服务器
message = input("请输入消息:")
client_socket.sendall(message.encode("utf-8"))
if __name__ == "__main__":
# 客户端列表
clients = []
# 创建服务器线程
server_thread = threading.Thread(target=server)
server_thread.start()
# 创建客户端线程
client_thread = threading.Thread(target=client)
client_thread.start()
```
在这个简单的聊天室示例中,服务端和客户端分别在不同的线程中运行,使用 Socket 模块进行通信。你可以根据自己的需要修改代码并添加更多功能。