辞树325 2022-05-11 19:43 采纳率: 85.2%
浏览 16
已结题

socket传输文件的主函数

在网上看到一段代码,关于socket传输文件,选取了其中的主函数部分,main函数中第一个if语句的条件想表达什么啊,没有看懂


#include <iostream>
#include <iomanip>

#include "client.h"
#include "timer.h"

using namespace std;

// 帮助函数,传入argv第一个字符指针
void help(const char *name) {
    // 裁切掉文件路径,保留文件名
    std::string progname = name;
    size_t lastPos = progname.find_last_of("/\\");
    progname = progname.substr(lastPos + 1);

    cout << ".\\" << progname << " [IP Address] [Port] [FilePath_1] [FilePath_2] ..." << endl;
    cout << endl;
}

int main(int argc, char **argv) {
    if (argc == 1 || (argc == 2 && (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-h") == 0))) {
        help(argv[0]);
        return 0;
    }

    // serverIP地址
    char *serverip = argv[1];
    // server端口号
    int port = atoi(argv[2]);
    bool flag = false;

    // 新建一个client指针
    Client *client = NULL;

    cout << endl;
    for (int i = 3; i < argc; i++) {
        // 新建一个Client对象
        client = new Client(serverip, port);
        // 初始化计时器,每隔两百毫秒就触发一次进度显示函数
        Timer timer(200);

        // 开始计时器
        timer.start(client->fileSize, client->sentBytes);
        // 开始文件传输
        flag = client->work(argv[i]);
        // 结束计时器
        timer.stop();

        // 如果文件传输成功,打印对应信息
        if (flag) {
            cout << left << setw(10) << "Successd: " << left << setw(20) << client->name;
            cout << " Size: " + std::to_string(client->fileSize / 1024 / 1024) + "MB " << endl;
        }
        // 如果文件传输失败,打印对应信息
        else {
            cout << left << setw(10) << "Failed:" << client->name << endl;
        }

        // 删除client对象
        delete client;
        client = NULL;
    }
    cout << endl;
    return 0;
}

  • 写回答

2条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 5月19日
      • 已采纳回答 5月11日
      • 创建了问题 5月11日

      悬赏问题

      • ¥75 数据总结公式(克服遗忘问题)
      • ¥15 flask 聊天机器人错误
      • ¥15 Excel数据分析,制作退休计划的电子表格模型
      • ¥15 EasyExcel向模板追加导入数据出现多余空行
      • ¥55 C语言谁能教我下面的代码怎么打
      • ¥15 C/C++程序代码解释
      • ¥15 java 2个list合并,如果id相同的对象则属性合并到一起,不同id的对象也要保留
      • ¥50 刚接触优化算法,在用Python时调用二次规划包cvxopt遇到如下问题
      • ¥15 python反斜杠问题
      • ¥30 pywinauto 如何获取弹出式菜单的数据