使用python,设计一个聊天软件,能在局域网内进行交互式聊天
时间: 2023-09-12 09:09:58 浏览: 58
以下是一个简单的局域网聊天程序的Python实现:
```python
import socket
import threading
# 服务器地址和端口
SERVER_HOST = '0.0.0.0'
SERVER_PORT = 8000
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器地址和端口
server_socket.bind((SERVER_HOST, SERVER_PORT))
# 开始监听
server_socket.listen(5)
# 客户端列表
clients = []
def broadcast(message):
"""
将消息广播给所有客户端
"""
for client in clients:
client.send(message)
def handle_client(client_socket, client_address):
"""
处理客户端连接
"""
print(f"New client: {client_address}")
clients.append(client_socket)
while True:
try:
# 接收消息
message = client_socket.recv(1024)
if message:
print(f"{client_address}: {message.decode()}")
# 广播消息
broadcast(message)
else:
# 客户端断开连接
client_socket.close()
clients.remove(client_socket)
print(f"Client {client_address} disconnected")
break
except:
# 客户端断开连接
client_socket.close()
clients.remove(client_socket)
print(f"Client {client_address} disconnected")
break
def start_server():
"""
启动服务器
"""
print(f"Server listening on port {SERVER_PORT}")
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
# 处理客户端连接
client_thread = threading.Thread(target=handle_client, args=(client_socket, client_address))
client_thread.start()
if __name__ == '__main__':
start_server()
```
运行该程序后,即可启动一个简单的聊天服务器,监听指定端口,并等待客户端连接。在客户端上,可以使用Python的socket库连接到该服务器,并发送和接收消息。例如:
```python
import socket
# 服务器地址和端口
SERVER_HOST = '192.168.0.100'
SERVER_PORT = 8000
# 创建一个socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect((SERVER_HOST, SERVER_PORT))
# 发送消息
client_socket.send(b'Hello, world!')
# 接收消息
message = client_socket.recv(1024)
print(message.decode())
# 关闭连接
client_socket.close()
```
该客户端程序可以通过修改`SERVER_HOST`和`SERVER_PORT`变量来连接到不同的服务器,并通过`send`和`recv`方法发送和接收消息。多个客户端可以同时连接到同一个服务器,并在局域网内进行交互式聊天。