用python编写聊天室程序
时间: 2023-08-28 08:06:51 浏览: 115
以下是基于Socket的多线程聊天室的示例代码:
```python
import socket
import threading
# 服务器地址和端口
HOST = '127.0.0.1'
PORT = 12345
# 存储所有客户端连接
clients = []
def broadcast(message, sender):
"""广播消息给所有客户端"""
for client in clients:
if client != sender:
client.send(message)
def handle_client(client):
"""处理客户端连接"""
while True:
try:
message = client.recv(1024)
if message:
broadcast(message, client)
else:
# 客户端断开连接
clients.remove(client)
except:
# 客户端异常断开连接
clients.remove(client)
break
def main():
"""启动服务器"""
# 创建Socket对象
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server.bind((HOST, PORT))
# 监听连接请求
server.listen()
print(f'Server is running on {HOST}:{PORT}...')
while True:
# 接受连接请求
client, address = server.accept()
print(f'New client connected from {address[0]}:{address[1]}')
# 存储客户端连接
clients.append(client)
# 启动新线程处理客户端连接
threading.Thread(target=handle_client, args=(client,)).start()
if __name__ == '__main__':
main()
```
以上代码启动一个基于Socket的多线程聊天室,使用方法如下:
1. 打开终端,启动服务器:`python chatroom.py`
2. 打开多个终端,使用telnet命令连接服务器:`telnet 127.0.0.1 12345`
3. 在任意一个终端发送消息,其他终端都可以收到广播消息。
可以使用类似telnet、netcat等工具连接聊天室服务器,也可以使用Python的socket模块编写客户端程序进行连接和通讯。
阅读全文