用python实现局域网通信系统:设计一个可以在局域网内实现点对点通信的系统,可以发送和接收文本消息、文件传输等功能,同时具备用户身份认证和安全保护。
时间: 2024-03-06 19:48:53 浏览: 177
实现局域网通信系统需要用到 Python 的 socket 模块和多线程编程技术。下面是一个简单的局域网通信系统示例代码,实现了文本消息的发送和接收功能:
### 服务器端代码
```python
import socket
import threading
# 定义全局变量
HOST = '0.0.0.0'
PORT = 8888
ADDR = (HOST, PORT)
# 定义用户列表,存储已连接的客户端信息
users = []
# 创建 TCP 服务器端 socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server_socket.bind(ADDR)
# 开始监听连接请求
server_socket.listen(5)
print('服务器启动,等待连接...')
# 定义消息处理函数
def handle_message(client_socket, client_address):
# 添加用户到用户列表
users.append((client_socket, client_address))
print('客户端已连接:', client_address)
while True:
# 接收客户端消息
data = client_socket.recv(1024)
if not data: # 客户端断开连接
break
print('收到客户端消息:', data.decode())
# 转发消息给所有客户端
for user in users:
if user[1] != client_address: # 不转发给发送方
user[0].send(data)
# 删除用户从用户列表
users.remove((client_socket, client_address))
print('客户端已断开连接:', client_address)
client_socket.close()
# 循环等待客户端连接
while True:
# 等待客户端连接
client_socket, client_address = server_socket.accept()
# 启动新线程处理消息
thread = threading.Thread(target=handle_message, args=(client_socket, client_address))
thread.start()
```
### 客户端代码
```python
import socket
import threading
# 定义全局变量
HOST = '127.0.0.1' # 服务器地址
PORT = 8888
ADDR = (HOST, PORT)
# 创建 TCP 客户端 socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
client_socket.connect(ADDR)
print('已连接服务器...')
# 定义消息处理函数
def handle_message():
while True:
# 接收服务器消息
data = client_socket.recv(1024)
if not data: # 服务器断开连接
break
print('收到服务器消息:', data.decode())
print('服务器已断开连接...')
client_socket.close()
# 启动新线程处理消息
thread = threading.Thread(target=handle_message)
thread.start()
while True:
# 发送消息
message = input('请输入要发送的消息:')
client_socket.send(message.encode())
# 关闭连接
client_socket.close()
```
以上代码仅作为局域网通信系统的简单示例,实际应用中需要添加用户身份认证、安全保护和文件传输等功能以提高安全性和实用性。
阅读全文