C#获取本地IP地址

本文提供了一个实用的C#代码示例,用于获取运行环境中本地计算机的IP地址。通过调用Dns.GetHostAddress方法并筛选出IPv4类型的地址,确保了返回的是有效的局域网IP地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C#获取本地IP地址

public static string GetLocalIp()
{
  IPAddress localIp=null;

try
{
     IPAddress[] ipArray;  
     ipArray=Dns.GetHostAddress(Dns.GetHostName());
     localIp=ipArray.Frist(ip=>ip.AddressFamily==AddressFamily.InterNetwork);
    
}  
catch(Exception ex)
{
}  
if(localIp==null)
{
   localIp=IPAddress.Parse("127.0.0.1");
}
return localIp.ToString();
}

### 获取本地IP地址并通过邮件发送 为了完成这一功能,可以分为两个主要部分:一是获取本机的IP地址;二是利用SMTP服务将该信息通过电子邮件的形式发送出去。 #### 使用C#获取本机IP地址C#中可以通过`System.Net.NetworkInformation`命名空间下的类库来访问网络配置属性,从而获得本机所有的IPv4和IPv6地址列表。下面是一个简单的例子用于展示如何枚举这些地址: ```csharp using System; using System.Linq; using System.Net; public class GetLocalIPAddress { public static string Fetch() { var host = Dns.GetHostEntry(Dns.GetHostName()); foreach (var ip in host.AddressList) { if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { return ip.ToString(); } } throw new Exception("无法找到有效的 IPv4 地址"); } } ``` 这段代码遍历主机名对应的每一个IP地址,并筛选出属于InterNetwork族(即IPv4)的第一个地址作为返回值[^1]。 #### 发送带有本地IP地址内容的邮件 对于构建并发送一封包含上述获取到的信息在内的电子邮件,则需要用到`System.Net.Mail.SmtpClient`以及`MailMessage`对象。这里假设已经有一个可用的SMTP服务器设置好了身份验证机制以便于发送邮件。以下是具体的实现方式: ```csharp using System; using System.Net; using System.Net.Mail; class SendEmailWithLocalIP { private const string SmtpServer = "smtp.example.com"; private const int PortNumber = 587; private const bool EnableSSL = true; private const string SenderAddress = "sender@example.com"; private const string Password = "password"; // 不建议硬编码密码,请考虑更安全的方式存储敏感信息 private const string ReceiverAddress = "receiver@example.com"; public static void Execute() { try { using(var smtpClient = new SmtpClient(SmtpServer)) { smtpClient.Port = PortNumber; smtpClient.EnableSsl = EnableSSL; smtpClient.Credentials = new NetworkCredential(SenderAddress, Password); MailMessage mailMsg = new MailMessage( from: SenderAddress, to: ReceiverAddress, subject: "Your Local IP Address", body: $"The local IP address is {GetLocalIPAddress.Fetch()}"); smtpClient.Send(mailMsg); Console.WriteLine("邮件已成功发出!"); } } catch(Exception ex){ Console.Error.WriteLine($"发生错误: {ex.Message}"); } } } ``` 以上程序片段展示了怎样组合前面提到的功能模块——先调用`Fetch()`函数取得当前计算机上的公共IPv4地址字符串形式,再将其嵌入至新创建的一封邮件正文里,最后借助指定好的SMTP参数向目标收件箱投递这封信件[^2][^3]. 请注意,在实际部署前应当替换掉示例中的占位符变量(`SmtpServer`, `SenderAddress`, etc.)为真实的邮箱服务商提供的相应细节,并妥善保管好任何涉及个人隐私的数据如账户凭证等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值