有些时候我们通过路由器做了端口映射,想测试一下从外网通过自己的公网IP能不能连进来,一般我们都是找在外网的朋友帮ping一下,如果朋友都不在线自己又急着测试怎么办呢?
其实使用PHP的fsockopen函数可以实现连接端口来进行测试:
[php]
$fp = @fsockopen($yourip, $port, &$errno, &$errstr, 1); // 这里加@可以略过Warning的提示
if ($fp) {
echo $port . ‘,’;
fclose($fp);
}
[/php]
另外php的参考文档里说IP前缀加上”udp://”就可以测试UDP,可我实际测试时发现都能连接成功,因此此功能暂可忽略。原因参见http://php.net/manual/en/function.fsockopen.php的Notes部分,里面有一段Warning。
源码下载:scanPorts.php.txt
本地测试:scanPorts.php (考虑到这不是并发扫描,建议每次扫描在100个端口范围内,但可以同时打开多个页面分别扫描)