当前位置: 首页 > news >正文

2025年5月26日工作总结

2025年5月26日工作总结:开源系统设计大赛PC网上邻居项目开发进展

一、工作概述

围绕开源系统设计大赛的选题和初步实现展开工作,重点研究了"PC网上邻居"这一选题的技术可行性,并进行了初步的代码实现。通过mDNS和相关技术实现了本地Samba端口的发现功能,但在文件传输功能上遇到了技术瓶颈。

二、详细工作内容

1. 上午工作:选题研究与确定

经过对多个潜在选题的分析比较,最终确定以"PC网上邻居"作为参赛项目。这个选题具有以下特点:

  • 硬件要求低

2. 下午工作:技术实现与问题发现

2.1 技术架构设计

采用mDNS协议进行局域网设备发现,结合Samba协议实现文件共享功能。主要技术栈包括:

  • mDNS:用于局域网设备发现和服务广播
  • SMB协议:实现文件共享的核心协议
  • C++:作为主要开发语言
  • libsmbclient:Samba官方提供的客户端库
2.2 代码实现情况

已完成以下核心模块的开发:

  1. Samba客户端模块 (samba_client.hpp/cpp)

    • 实现了Samba服务检测功能
    • 完成了共享目录列表获取
    • 初步实现了文件上传下载接口
  2. 网络扫描模块 (scanner.hpp/cpp)

    • 实现了基础ARP扫描功能
    • 设备信息收集功能
  3. 主程序模块

    • 服务扫描与展示功能
    • 基本的用户交互界面
2.3 遇到的问题

在测试过程中发现以下关键问题:

  1. 文件传输功能失效:虽然能发现Samba服务和共享目录,但实际文件上传下载操作无法完成(实在是找不到为什么,这些原因都排除了)
  2. 认证问题:硬编码的认证信息可能导致兼容性问题
  3. 端口扫描范围:当前仅扫描了标准端口和有限的自定义端口范围

三、代码分析

1. 核心类设计

// Samba客户端类
class SambaClient {
public:SambaClient();~SambaClient();std::vector<int> find_samba_ports(const std::string& ip);bool check_samba(const std::string& ip, int port = 445);std::vector<SambaShare> list_shares(const std::string& ip, int port = 445);bool download(const std::string& ip, const std::string& share,const std::string& remote_path, const std::string& local_path);bool upload(const std::string& ip, const std::string& share,const std::string& local_path, const std::string& remote_path);
private:std::string username = "wjj";std::string password = "20030509a";
};

2. 关键实现细节

文件传输功能的实现采用了标准的POSIX文件操作与Samba客户端库的结合:

bool SambaClient::download(const std::string& ip, const std::string& share,const std::string& remote_path, const std::string& local_path) {std::string src = "smb://" + ip + "/" + share + "/" + remote_path;int src_fd = smbc_open(src.c_str(), O_RDONLY, 0);if (src_fd < 0) return false;int dst_fd = open(local_path.c_str(), O_WRONLY | O_CREAT | O_TRUNC, 0644);if (dst_fd < 0) {smbc_close(src_fd);return false;}char buf[1024];ssize_t n;bool success = true;while ((n = smbc_read(src_fd, buf, sizeof(buf))) > 0){if (write(dst_fd, buf, n) != n) {success = false;break;}}close(dst_fd);smbc_close(src_fd);return success;
}

四、遇到的问题与解决方案思考

1. 文件传输失败的可能原因

  1. 认证问题:当前使用硬编码的用户名密码,可能不匹配目标服务器的认证要求
  2. 权限问题:共享目录的写权限可能受限
  3. 路径格式:远程路径的拼接方式可能不符合Samba服务器的预期

2. 后续改进方向

  1. 增强认证灵活性:改为从配置文件或用户输入获取认证信息
  2. 错误处理增强:添加更详细的错误日志输出
  3. 协议支持扩展:考虑增加对WebDAV等其他文件共享协议的支持
  4. 用户界面优化:提供更友好的交互方式

五、明日工作计划

  1. 解决文件传输功能失效的问题
  2. ”烽火通信杯“研究生电子设计竞赛PPT决赛制作,技术论文修改
  3. DSP结课设计需同步推进

六、总结

今日工作完成了项目的基础架构搭建和核心功能初步实现,虽然在文件传输功能上遇到了障碍,但整体方向是正确的。对Samba协议和局域网文件共享有了更深入的理解,但是东西太多太杂,不好消化,只能了解。进度稍微过于单线程。

技术关键词:Samba协议、mDNS、局域网文件共享、C++网络编程、libsmbclient

http://www.xdnf.cn/news/652843.html

相关文章:

  • 论文阅读:2024 arxiv Prompt Injection attack against LLM-integrated Applications
  • c#基础07(调试与异常捕捉)
  • [Git] 如何将已经执行的修改操作撤销
  • 力扣热题100之LRU缓存机制
  • 力扣 394.字符串解码
  • mysql-tpcc-mysql压测工具使用
  • 【Java工程师面试全攻略】Day2:Java集合框架面试全解析
  • 榕壹云物品回收系统实战案例:基于ThinkPHP+MySQL+UniApp的二手物品回收小程序开发与优化
  • 【运维】OpenWrt DNS重绑定保护配置指南:解决内网域名解析问题
  • 项目亮点 封装request请求模块
  • 2025年- H51-Lc159 --199. 二叉树的右视图(层序遍历,队列)--Java版
  • AI学习笔记二十八:使用ESP32 CAM和YOLOV5实现目标检测
  • 使用docker容器部署Elasticsearch和Kibana
  • Rk3568 Andorid 11 ,根据prop属性的值控制是否禁止u盘连接
  • 倚光科技在二元衍射面加工技术上的革新:引领光学元件制造新方向​
  • 拓扑光子混沌算法
  • 开源第三方库发展现状
  • 《软件工程》第 9 章 - 软件详细设计
  • Ini配置文件读写,增加备注功能
  • VR 技术在农业领域或许是一抹新曙光​
  • Java Class 文件编码机制全解析
  • 分布式锁与锁续期
  • 轻量级视觉语言模型 Dolphin:高效精准的文档结构化解析利器
  • 电机控制学习笔记
  • 深入解析Spring Boot与Spring Security整合实现JWT认证
  • ADS学习笔记(四) S参数仿真
  • 网络编程1
  • SAP ERP 系统拆分的七大挑战
  • WIN--文件读写
  • Linux的top命令使用