用pycharm写一个聊天程序
时间: 2023-07-01 14:08:06 浏览: 104
python实现聊天小程序
好的,我们可以使用 Python 的 socket 和 threading 库来实现一个简单的聊天程序。以下是示例代码:
```python
import socket
import threading
# 服务器地址和端口
SERVER_HOST = 'localhost'
SERVER_PORT = 8000
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server_socket.bind((SERVER_HOST, SERVER_PORT))
# 开始监听
server_socket.listen()
# 存储所有客户端的连接
client_connections = []
def handle_client(client_socket, client_address):
"""
处理单个客户端的连接
"""
print(f'New connection from {client_address[0]}:{client_address[1]}')
client_connections.append(client_socket)
while True:
# 接收客户端消息
message = client_socket.recv(1024).decode('utf-8').strip()
if message:
# 打印客户端发来的消息
print(f'Received message from {client_address[0]}:{client_address[1]}: {message}')
# 将消息发送给所有客户端
for connection in client_connections:
if connection != client_socket:
connection.sendall(message.encode('utf-8'))
else:
# 客户端断开连接
print(f'{client_address[0]}:{client_address[1]} disconnected')
client_connections.remove(client_socket)
client_socket.close()
break
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
# 创建一个线程处理客户端连接
client_thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
client_thread.start()
```
这个程序会创建一个服务器并等待客户端连接。当一个客户端连接后,会创建一个新的线程处理客户端连接。在处理客户端连接的线程中,程序会不断接收客户端发来的消息并发送给所有其他客户端。当客户端断开连接时,程序会从客户端连接列表中移除该连接。
阅读全文