以编程方式检查打开的 WLAN 网络是否真的打开
Check programmatically if open WLAN network is really open
有两种开放(未加密)WLAN 网络:一种是真正开放并在连接后提供 IP 和网络访问权限的网络,另一种是在连接后需要额外身份验证的网络(通常通过网页,其中必须输入属于此服务提供商的一些特殊凭据)。
是否可以在连接之前查明哪种"open"网络可用?可能以某种方式通过作为结果返回到 WiFiManager.startScan()?
的 ScanResult 对象
谢谢!
Is it possible to find out what kind of "open" network is available before connecting to it?
简而言之,没有。 Android WifiManager
(实际上,任何计算机的网络驱动程序/堆栈)只关心低级通信。查看 OSI 模型,主要是物理级别、数据 Link 级别和网络级别。
WLAN 硬件、驱动程序等显然有额外的问题,包括扫描可用的 AP 并验证它们是否提供 'open' 访问或需要身份验证,尽管在后一种情况下它只与 WEP/WPA 样式有关身份验证,不考虑传输层、会话层等任何更高级别的控制/安全
您描述的那种通过网页进行身份验证的方式通常是酒吧、咖啡馆、旅馆等的要求,在这些地方 WLAN 有效 'ring-fenced' 并且所有 HTTP 流量都必须通过有效的 HTTP 代理服务器(也可能强加内容筛选/blockng)。在这种 WLAN 服务的情况下,通常只允许网络流量 - 例如,尝试使用 HTTP/HTTPS 以外的任何其他协议连接到外部世界将被阻止。
因此,任何 WLAN(甚至 LAN)客户端硬件、驱动程序、堆栈都无法发现在尝试连接到远程/外部站点和服务时is/isn不允许或不需要的内容。
有两种开放(未加密)WLAN 网络:一种是真正开放并在连接后提供 IP 和网络访问权限的网络,另一种是在连接后需要额外身份验证的网络(通常通过网页,其中必须输入属于此服务提供商的一些特殊凭据)。
是否可以在连接之前查明哪种"open"网络可用?可能以某种方式通过作为结果返回到 WiFiManager.startScan()?
的 ScanResult 对象谢谢!
Is it possible to find out what kind of "open" network is available before connecting to it?
简而言之,没有。 Android WifiManager
(实际上,任何计算机的网络驱动程序/堆栈)只关心低级通信。查看 OSI 模型,主要是物理级别、数据 Link 级别和网络级别。
WLAN 硬件、驱动程序等显然有额外的问题,包括扫描可用的 AP 并验证它们是否提供 'open' 访问或需要身份验证,尽管在后一种情况下它只与 WEP/WPA 样式有关身份验证,不考虑传输层、会话层等任何更高级别的控制/安全
您描述的那种通过网页进行身份验证的方式通常是酒吧、咖啡馆、旅馆等的要求,在这些地方 WLAN 有效 'ring-fenced' 并且所有 HTTP 流量都必须通过有效的 HTTP 代理服务器(也可能强加内容筛选/blockng)。在这种 WLAN 服务的情况下,通常只允许网络流量 - 例如,尝试使用 HTTP/HTTPS 以外的任何其他协议连接到外部世界将被阻止。
因此,任何 WLAN(甚至 LAN)客户端硬件、驱动程序、堆栈都无法发现在尝试连接到远程/外部站点和服务时is/isn不允许或不需要的内容。