BO 的个人资料回到杭州照片日志列表 工具 帮助
2008年9月

C 语言参数读取代码

                                                效果图

ec

static struct option long_options[] = {
    {"help", no_argument, NULL, 'h'},
    {"tcp", required_argument, NULL, 't'},
    {"udp", required_argument, NULL, 'u'},
    {"ip", required_argument, NULL, 'i'},
    {"ping", no_argument, NULL, 'p'},
    {"size", required_argument, NULL, 's'},
    {"count", required_argument, NULL, 'c'},
    {"log", required_argument, NULL, 'l'},
    {NULL, 0, NULL, 0}
};

 

void usage(int status)
{
    if (status != 0)
        printf("Try `%s --help' for more information.\n",
             program_name);
    else {
        printf("IPGen : IP packets generator\n");
        printf("Version %s\n", VERSION);
        printf("Leo Liang <leo.liang@china.com>\n\n");

        printf("Usage: program_name [option] ... src_ip dest_ip\n");
        printf("\nIP packets type:\n");
        printf("  -t, --tcp=PORT      TCP\n");
        printf("  -u, --udp=PORT      UDP\n");
        printf("  -i, --ip=PROTO      IP\n");
        printf("  -p, --ping          Ping(ICMP)\n");
        printf("\nPackets size:\n");
        printf("  -s, --size=VALUE    Packet size (default=%d)\n",
             DEFAULT_PACKET_SIZE);
        printf("  -c, --count=VALUE   How many packets to send "
             "(ignore when with -t, default=%d)\n",
             DEFAULT_PACKET_COUNT);
        printf("\nInfomation:\n");
        printf("  -l, --log=LOGFILE   Log to file\n");
        printf("  --help              Show this help\n");
    }
    exit(status);
}

 

int main(int argc, char* argv[])
{

/* parse options */
while ((c = getopt_long(argc, argv, "ht:u:i:ps:c:l:", long_options, NULL)) != -1) {
    switch (c) {
    case 'h':
        usage(0);
        break;
    case 't':
        packetType = IPPROTO_TCP;
        packetTypeName = "TCP";
        port = atoi(optarg);
        printf("port = %d\n",port);
        break;
    case 'u':
        packetType = IPPROTO_UDP;
        packetTypeName = "UDP";
        port = atoi(optarg);
        break;
    case 'i':
        packetType = IPPROTO_RAW;
        packetTypeName = "IP";
        proto = atoi(optarg);
        break;
    case 'p':
        packetType = IPPROTO_ICMP;
        packetTypeName = "ping(ICMP)";
        break;
    case 's':
        packetSize = atoi(optarg);
        break;
    case 'c':
        packetCount = atoi(optarg);
        break;
    case 'l':
        //OpenLog(optarg, LOG_INFO);
        OpenLog(optarg, LOG_DEBUG);
        break;
    default:
        usage(1);
    }
}

评论

请稍候...
很抱歉,您输入的评论太长。请缩短您的评论。
您没有输入任何内容,请重试。
很抱歉,我们当前无法添加您的评论。请稍后重试。
若要添加评论,需要您的家长授予您相应权限。请求权限
您的家长禁用了评论功能。
很抱歉,我们当前无法删除您的评论。请稍后重试。
您已超过了一天之内允许提供的评论数上限。请在 24 小时后重试。
因为我们的系统表明您可能在向其他用户提供垃圾评论,您的帐户已禁用了评论功能。如果您认为我们错误地禁用了您的帐户,请联系 Windows Live 支持部门
完成下面的安全检查,您提供评论的过程才能完成。
您在安全检查中键入的字符必须与图片或音频中的字符一致。

若要添加评论,请使用您的 Windows Live ID 登录(如果您使用过 Hotmail、Messenger 或 Xbox LIVE,您就拥有 Windows Live ID)。登录


还没有 Windows Live ID 吗?请注册

引用通告

此日志的引用通告 URL 是:
http://sunicebo.spaces.live.com/blog/cns!21B0A915C2ABD821!452.trak
引用此项的网络日志