怎么实现c#获取ip内网,外网地址?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么实现c#获取ip内网,外网地址?相关的知识,希望对你有一定的参考价值。

还有个问题

我自己写的 获取的内网地址程序 在本机运行怎么是我虚拟机 虚拟的内网地址?

rivate static string getIPAddress ( )

System.Net.IPAddress addr;
// 获得本机局域网IP地址
addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [0].Address ) ;
return addr.ToString ( ) ;

读取计算机名称本机固定IP地址源程序
导入程序用到的名称空间
using System ;
using System.Net;
using System.Windows.Forms ;
using System.Drawing ;
public class Form3 : Form

//定义二个标签
private Label label1 ;
private Label label2 ;
public static void Main ( )

Application.Run ( new Form3 ( ) ) ;

// 构造窗体
public Form3 ( )

// 建立标签并且初始化
this.label1 = new System.Windows.Forms.Label ( ) ;
this.label2 = new System.Windows.Forms.Label ( ) ;
//先继承一个Label 类
label1.Location = new System.Drawing.Point ( 24 , 16 ) ;
label2.Location = new System.Drawing.Point ( 44 , 36 ) ;
//设定 Label的显示位置
label1.Text = "主机名称:" + System.Net.Dns.GetHostName ( ) ;
// 显示本机的计算机名称
label2.Text = "IP 地址:" + getIPAddress ( ) ;
// 显示本机的局域网IP地址
label1.Size = new System.Drawing.Size ( 200 , 50 ) ;
label2.Size = new System.Drawing.Size ( 200 , 80 ) ;
//设定标签的大小
label1.TabIndex = 0 ;
label2.TabIndex = 1 ;
label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ;
label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter ;
// 设定标签的对齐方式
this.Text = "获得主机名称和IP地址!" ;
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent ;
this.AutoScaleBaseSize = new System.Drawing.Size ( 8 , 16 ) ;
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D ;
// 设定窗体的边界类型
this.ForeColor = System.Drawing.SystemColors.Desktop ;
this.Font = new System.Drawing.Font ( "宋体" , 10 , System.Drawing.FontStyle.Bold ) ;
// 设定字体、大小就字体的式样
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide ;
this.ClientSize = new System.Drawing.Size ( 250 , 250 ) ;
//把标签加到窗体中
this.Controls.Add ( this.label1 ) ;
this.Controls.Add ( this.label2 ) ;

private static string getIPAddress ( )

System.Net.IPAddress addr;
// 获得本机局域网IP地址
addr = new System.Net.IPAddress ( Dns.GetHostByName ( Dns.GetHostName ( ) ) .AddressList [0].Address ) ;
return addr.ToString ( ) ;

参考技术A 获取真实IPview plaincopy to clipboardprint?
public static string GetRealIP()

string ip;
try

HttpRequest request = HttpContext.Current.Request;

if (request.ServerVariables["HTTP_VIA"] != null)

ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();

else

ip = request.UserHostAddress;


catch (Exception e)

throw e;


return ip;
public static string GetRealIP()

string ip;
try

HttpRequest request = HttpContext.Current.Request; if (request.ServerVariables["HTTP_VIA"] != null)

ip = request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString().Split(',')[0].Trim();

else

ip = request.UserHostAddress;


catch (Exception e)

throw e;
return ip;
获取代理IPview plaincopy to clipboardprint?
public static string GetViaIP()

string viaIp = null;

try

HttpRequest request = HttpContext.Current.Request;

if (request.ServerVariables["HTTP_VIA"] != null)

viaIp = request.UserHostAddress;



catch (Exception e)


throw e;


return viaIp; 至于判断是否公网,将2个获取的IP进行比较即可,如果相等,则说明是公网用户,如果不相等,则是内网用户.

想让笔记本同时访问外网和内网,该怎么设置ip

首先外网是通过wifi 连接的,内网是本地连接,内网ip是192.168.5.75 网关是:192.168.5.1。
我该怎样设置才能让电脑同时连接到外网和内网?谢谢了

不要改路由器设置,怎么改都会面临相同的问题。

不要使用自动获取IP,自动获取的IP是路由器分配的,一个路由器无法兼顾另外一个路由器。

正确的方法:手动设置IP地址,为你的网卡设置两个IP地址,一个是192.168.1.*网段,另外一个是172.18.*.*网段,默认网关和DNS都必须设置为外网的,然后使用路由表添加内网的网关设置,使用hosts文件解析内网的DNS。

有一个关键:默认网关和DNS要按照外网的设置,也就是默认网关为192.168.0.1,DNS为192.168.0.1或者自动获取一次记下来。

有三个难点:网卡绑定多个IP、手工路由、hosts设置。
设定多个IP的方法:在设置IP的界面,先按照外网设置一个IP,例如192.168.1.123,以及对应的掩码、网关、DNS,然后点高级、添加IP地址,添加内外的IP和掩码,例如172.18.1.123。
手工修改路由的方法:需要使用DOS命令,例如下面的命令(如果内网还有172以外的网段,需要增加一条类似的命令):
route add 172.0.0.0 mask 255.0.0.0 172.18.1.254
修改hosts文件的方法:用记事本修改hosts文件,把你内网需要解析的主机添加进去,比如你需要用域名uca.clic访问IP为172.18.2.3的服务器,那么就在hosts文件最后添加一行(该文件的具体位置可能是C:\Windows\System32\drivers\etc):
172.18.2.3 uca.clic
参考技术A 去掉内网网关192.168.5.1,把内网ip地址的掩码设成255.0.0.0就行。无线网卡不用动追问

我这样设置后好像不行啊……只能用无线网访问外网,内网依然不行

追答

你的内网地址有没有超出192.x.x.x网段?
如果有的话要加路由的。方法如下:
http://www.cnblogs.com/aurgler/archive/2009/09/14/1566102.html

本回答被提问者和网友采纳
参考技术B 想做到笔记本同时访问外网和内网,那么你就具有两个ip地址,一个内网的,一个外网的。
设置如下;
1、在电脑的找到“本地链接”,双击打开。
2、选“常规”选项卡,下面有一个“属性”的按钮,点击进去。
3、进去“属性”这个界面,找到“internet协议”双击进入。
4、进入这个界面,最下面有一个“高级”这个按钮。
5、找到“ip设置”这个选项卡,分别在“ip地址”和“默认网关”这个大框里面,点击“添加”分别输入ip地址和默认网关等信息。
通过上面的设置,可以做到一个网卡具有两个ip地址。

以上是关于怎么实现c#获取ip内网,外网地址?的主要内容,如果未能解决你的问题,请参考以下文章

C# 获取本机外网IP

请问 C# 如何获取外网IP?

C#如何在页面中获取本机的外网IP地址

服务器IP、内网IP和外网IP有啥联系?分别是怎样获得的?

vc获取本机外网IP,怎么获取,求源码。

怎么样根据IP地址判断内网还外网