小编cla*_*ven的帖子

任何人都可以解释这种不起眼的行为吗?

我正在尝试为安全课程编写端口扫描程序.我决定在Linux上使用C编写它,因为我从未在Java之外做任何与网络相关的事情.我在Ubuntu 10.10上使用GCC 4.4.5.我有一个主函数解析参数,然后用结果变量调用扫描函数.这是我的完整程序:http://pastebin.com/DHU7SEQR

我遇到的问题是它无法正常工作(报告所有端口都打开),除非我在调用函数之前打印出从用户收到的变量(或者重新排列传递给可执行文件的参数的顺序) ,这对我来说毫无意义.请注意注释掉的行(150),将此行注释掉并使用该命令进行编译

gcc scanner.c -o scanner
Run Code Online (Sandbox Code Playgroud)

然后运行该程序

./scanner -a 127.0.0.1 -b 0 -e 1000 -t 1000
Run Code Online (Sandbox Code Playgroud)

导致它报告所有端口都是打开的.但是,取消注释该行(即,在调用函数之前打印出所有变量)会导致正确报告端口的状态.重新排列参数的顺序

./scanner -b 0 -e 1000 -t 1000 -a 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

似乎也可以工作,就像在每个case块中添加一个printf语句一样(即使不自己打印变量).

c sockets linux ubuntu gcc

2
推荐指数
1
解决办法
248
查看次数

标签 统计

c ×1

gcc ×1

linux ×1

sockets ×1

ubuntu ×1