【问题标题】:How do I know if my computer's not connected to a network?如何知道我的计算机是否未连接到网络?
【发布时间】:2012-02-24 10:08:36
【问题描述】:

我正在制作一个局域网聊天应用程序(服务器和客户端程序),我想知道如何获取自己计算机的 IP 地址(用于服务器程序)并找到this question

我在我的程序中使用了代码并在我的计算机没有连接到互联网、局域网或任何外部设备时对其进行了测试,我认为代码会因此引发异常(这意味着我的计算机没有连接任何网络)...但它没有,而是返回一个 IP 地址。

有没有办法查明我的电脑是否没有连接到任何网络?

【问题讨论】:

标签: c# sockets tcp


【解决方案1】:
【解决方案2】:

使用 System.Net.NetworkInformation,您可以收集有关网络接口的信息。所以这应该可以帮助你:

public Boolean isConnected()
{
    NetworkInterface[] interfaces = NetworkInterface.GetAllNetworkInterfaces();

    foreach (NetworkInterface face in interfaces)
    {
        if (face.OperationalStatus == OperationalStatus.Up || face.OperationalStatus == OperationalStatus.Unknown)
        {
            // Internal network interfaces from VM adapters can still be connected 
            IPv4InterfaceStatistics statistics = face.GetIPv4Statistics();
            if (statistics.BytesReceived > 0 && statistics.BytesSent > 0)
            {
                // A network interface is up
                return true;
            }
        }
    }
    // No Interfaces are up
    return false;
}

【讨论】:

    【解决方案3】:

    检查您是否在任何特定时间点连接到网络的唯一方法是检查您的任何网关在该时间点是否可访问,例如ping 所有网关的地址,如果其中至少有一个响应,那么您就真正连接了:如果它们都没有响应,那么您的电缆可能仍然连接,但不能说您已连接到网络!

    希望这会有所帮助!好好玩!

    【讨论】:

    • @Xei 对不起,我没有用 c# 编码,所以不能在这里给你例子。但是您应该能够从 c# 调用任何脚本,并且该脚本可以为您完成这项工作。例如 ping 和 ifconfig 是两个主要在所有系统(或它们的变体)上可用的程序:这两个程序足以开发此逻辑。还有很多其他方法可以开发这个简单的逻辑,但是使用简单的脚本/网络工具可以解决比自己开发整个逻辑更神奇的问题。
    猜你喜欢
    • 2012-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多