我正在制作局域网聊天应用程序(服务器和客户端程序),我想知道如何获取自己计算机的IP地址(针对服务器程序)并找到this question。
我在我的程序中使用了代码,并在我的计算机没有连接到互联网,局域网或任何外部设备的情况下对其进行了测试,我认为代码会因此而引发异常(并且意味着我的计算机不是连接任何网络)...但它没有,而是返回了一个IP地址。
有没有办法确定我的电脑是否未连接到任何网络?
答案 0 :(得分:1)
使用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;
}
答案 1 :(得分:1)
您可以订阅System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged事件,然后评估NetworkAvailabilityEventArgs.IsAvailable属性。
或者,您可以调用System.Net.NetworkInformation.GetIsNetworkAvailable()方法。
答案 2 :(得分:0)
唯一可以检查您是否在任何特定时间点连接到网络的方法是检查您的网关是否可以在该时间点访问,例如ping所有网关的地址,如果其中至少有一个响应,那么你真正连接:如果没有响应,那么你的电缆仍然可以连接,但不能说你连接到网络了!
希望这有帮助! cforfun!