1、前言
本文利用 fsockopen() 函數,寫出一個簡單的連接埠掃描器。
2、關鍵技術
本實例的連接埠號碼是固定的,透過對陣列的遍歷,利用fsockopen() 函數連接,如果連接成功,則該連接埠處於開放狀態,否則該連接埠處於關閉狀態。
核心程式碼如下:
foreach ($port as $key => $value) { echo '<tr>'; echo '<td>' . $key . '</td>'; echo '<td>' . $value . '</td>'; echo '<td>' . $msg[$key] . '</td>'; //$errno 和 $errstr 在这里基本用不上,只是为了设置 timeout,防止请求超时 $fp = @fsockopen($ip, $value, $errno, $errstr, 1);//如果主机(hostname)不可访问,将会抛出一个警告级别(E_WARNING)的错误提示。所有需要加@ $result = $fp ? '<span>开启</span>' : '<span>关闭</span>'; echo '<td>' . $result . '</td>'; echo '</tr>'; }
3、程式碼如下
nbsp;html> <meta> <title>端口扫描</title> <style> td{ padding:10px; border-bottom:1px solid #eee; } </style>
id | 端口号 | 服务 | 开启状态 |
' . $key . ' | '; echo '' . $value . ' | '; echo '' . $msg[$key] . ' | '; //$errno 和 $errstr 在这里基本用不上,只是为了设置 timeout,防止请求超时 $fp = @fsockopen($ip, $value, $errno, $errstr, 1);//如果主机(hostname)不可访问,将会抛出一个警告级别(E_WARNING)的错误提示。所有需要加@ $result = $fp ? '开启' : '关闭'; echo '' . $result . ' | '; echo '
4、主要函數介紹
4.1、fsockopen
根據一個主機名稱來建立一個連接,成功返回一個資源對象,失敗返回false;主機不可用是拋出一個警告
詳情參考:http:// php.net/manual/en/function.fsockopen.php
以上是fsockopen() 函數製作連接埠掃描器的詳細內容。更多資訊請關注PHP中文網其他相關文章!