客户端使用了Windows Socket提供的API,支持上传、下载、删除、查看文件,断点续传,二进制/ASCII模式切换,被动模式切换,记录操作日志等功能。
代码包含的类如下:
①MySocket类,对SOCKET进行了简单的封装
1 //对winsock SOCKET的封装 2 class MySocket 3 { 4 public: 5 MySocket(); 6 //~MySocket(); 7 //重载向SOCKET类型转换的运算符 8 operator SOCKET() const; 9 //设置地址信息 10 void SetAddrInfo(std::string host, int port); 11 bool Connect(); 12 //bool Disconnect(); 13 bool Create(int af = AF_INET, int type = SOCK_STREAM, int protocol = IPPROTO_TCP); 14 bool Close(); 15 //获取主机ip 16 std::string GetHostIP() const; 17 //获取主机端口 18 int GetPort() const; 19 private: 20 SOCKET sock; 21 SOCKADDR_IN addr_in; //记录连接的服务器的地址信息 22 bool conn_flag; //判断是否已连接 23 };
②Record类,存储了客户端与服务器的交互信息的数据结构
1 //枚举类型,CMD代表命令信息,RES代表响应信息 2 enum log_type { CMD = 1, RES = 2 }; 3 4 //与服务器的交互信息 5 class Record 6 { 7 friend std::ostream & operator关注打赏