2025年5月26日工作总结
2025年5月26日工作总结:开源系统设计大赛PC网上邻居项目开发进展
一、工作概述
围绕开源系统设计大赛的选题和初步实现展开工作,重点研究了"PC网上邻居"这一选题的技术可行性,并进行了初步的代码实现。通过mDNS和相关技术实现了本地Samba端口的发现功能,但在文件传输功能上遇到了技术瓶颈。
二、详细工作内容
1. 上午工作:选题研究与确定
经过对多个潜在选题的分析比较,最终确定以"PC网上邻居"作为参赛项目。这个选题具有以下特点:
- 硬件要求低
2. 下午工作:技术实现与问题发现
2.1 技术架构设计
采用mDNS协议进行局域网设备发现,结合Samba协议实现文件共享功能。主要技术栈包括:
- mDNS:用于局域网设备发现和服务广播
- SMB协议:实现文件共享的核心协议
- C++:作为主要开发语言
- libsmbclient:Samba官方提供的客户端库
2.2 代码实现情况
已完成以下核心模块的开发:
-
Samba客户端模块 (
samba_client.hpp/cpp
)- 实现了Samba服务检测功能
- 完成了共享目录列表获取
- 初步实现了文件上传下载接口
-
网络扫描模块 (
scanner.hpp/cpp
)- 实现了基础ARP扫描功能
- 设备信息收集功能
-
主程序模块
- 服务扫描与展示功能
- 基本的用户交互界面
2.3 遇到的问题
在测试过程中发现以下关键问题:
- 文件传输功能失效:虽然能发现Samba服务和共享目录,但实际文件上传下载操作无法完成(实在是找不到为什么,这些原因都排除了)
- 认证问题:硬编码的认证信息可能导致兼容性问题
- 端口扫描范围:当前仅扫描了标准端口和有限的自定义端口范围
三、代码分析
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. 文件传输失败的可能原因
- 认证问题:当前使用硬编码的用户名密码,可能不匹配目标服务器的认证要求
- 权限问题:共享目录的写权限可能受限
- 路径格式:远程路径的拼接方式可能不符合Samba服务器的预期
2. 后续改进方向
- 增强认证灵活性:改为从配置文件或用户输入获取认证信息
- 错误处理增强:添加更详细的错误日志输出
- 协议支持扩展:考虑增加对WebDAV等其他文件共享协议的支持
- 用户界面优化:提供更友好的交互方式
五、明日工作计划
- 解决文件传输功能失效的问题
- ”烽火通信杯“研究生电子设计竞赛PPT决赛制作,技术论文修改
- DSP结课设计需同步推进
六、总结
今日工作完成了项目的基础架构搭建和核心功能初步实现,虽然在文件传输功能上遇到了障碍,但整体方向是正确的。对Samba协议和局域网文件共享有了更深入的理解,但是东西太多太杂,不好消化,只能了解。进度稍微过于单线程。
技术关键词:Samba协议、mDNS、局域网文件共享、C++网络编程、libsmbclient