一、实验目的
- 掌握在Linux环境上使用SSH远程连接的方法
- 熟悉使用socket库进行UDP编程进行网络通讯的方法
二、实验软硬件要求
1、安装Windows 操作系统的计算机
2、VMware虚拟机
3、树莓派镜像
三、实验预习
1、SSH概念与使用工具
2、Python的Socket库使用方法
四、实验内容(实验步骤、测试数据等)
1、启动树莓派虚拟机,查看本机的IP地址,之后在宿主机上启动SSH工具软件连接树莓派,并将《Less2-嵌入式开发基础2.zip》压缩包上传到cy目录下后解压,并通过python命令执行《3-展牌-读文件.py》程序。
命令提示:
解压zip文件:unzip XXX.zip
运行python程序命令:python XXX.py
(1)运行结果
2、已知有附件1所示程序可以通过TCP连接从远程主机上连接到树莓派上的服务器,从而通过输入的文字修改文本《显示内容.txt》的内容,进而影响前台展板的显示内容。且有附件2程序可实现UDP数据传输,请修改附件2程序,使得附件2程序能实现附件1程序相同的功能。然后用自己写的程序将屏幕显示改为自己的“学号+姓名”,最后将结果粘贴到以下红框内。
修改内容提示:
- udp客户端部分改写为使用input函数读取用户输入,然后发送
- udp服务器部分改写为收到用户输入后,写入《显示内容.txt》文件
附件1、附件2:
4.3-UDP服务器.py
# -*- coding: utf-8 -*-
"""
Created on Sat Sep 23 17:54:25 2023
@author: aigo
"""
import socket
# 创建UDP服务器套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定IP地址和端口号
server_host = '0.0.0.0' # 修改为服务器的IP地址
server_port = 12345 # 修改为服务器的端口号
server_socket.bind((server_host, server_port))
while True:
# 接收客户端消息和地址
print("等待客户端连接...")
data, client_address = server_socket.recvfrom(1024)
print("接收到来自客户端的消息:", data.decode())
print("客户端地址:", client_address)
command = data.decode()
# 在这里执行相应的命令操作
# 将命令保存到文件中
with open("显示内容.txt", 'w+', encoding='GBK',errors='ignore') as file:
file.write(command + "\n")
print(command)
# 关闭socket
server_socket.close()
4.3-UDP客户端.py
import socket
# 创建UDP客户端套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 服务器地址和端口号
#server_host = '10.55.60.90' # 修改为服务器的IP地址
server_host = '127.0.0.1'
server_port = 12345 # 修改为服务器的端口号
while True:
# 从命令行读取用户输入的命令
command = input("请输入命令:")
# 发送命令给服务器
#command = "hello world from udp"
client_socket.sendto(command.encode(), (server_host, server_port))
if command.lower() == 'exit': # 如果输入"exit",退出循环
break
# 关闭连接
client_socket.close()
(2)运行结果
(3)回答问题:以上模式是C/S模式还是B/S模式?相比于B/S模式有哪些优点和缺点?
是基于C/S模式(Client/Server模式)的。在这个模式下,有一个客户端(宿主机)与一个服务器(树莓派虚拟机)进行通信。客户端发送请求,服务器响应请求,这是典型的C/S模式。
相对于B/S模式(Browser/Server模式,也称为Web模式),C/S模式有一些优点和缺点:
C/S模式的优点:
- 性能优越: C/S模式通常具有更好的性能,因为客户端和服务器可以直接通信,而无需通过Web浏览器和Web服务器之间的中介。
- 更强的功能: C/S应用程序通常可以提供更丰富和复杂的功能,因为它们不受Web浏览器的限制。
- 离线支持: C/S应用程序可以在没有Internet连接的情况下运行,而B/S应用程序通常需要连接到Web服务器才能正常工作。
- 更好的控制: 开发者可以更好地控制客户端应用程序的行为和外观,而不受不同浏览器的限制。
C/S模式的缺点:
- 安装和更新: 客户端应用程序需要安装在用户设备上,这可能需要时间和资源。此外,更新客户端应用程序也需要用户的干预。
- 平台依赖性: 不同操作系统上可能需要不同版本的客户端应用程序,这增加了开发和维护的复杂性。
- 安全性风险: 客户端应用程序可能会增加安全风险,因为它们在用户设备上运行,可能受到恶意软件和攻击的威胁。
- 成本: 开发和维护C/S应用程序通常需要更多的资源和成本,特别是在跨多个平台和设备进行支持时。