最近项目里用到socket发送一些命令给服务器程序 用来获取一些数据 但是当遇到有俩个网卡的电脑时该怎么进行判断呢?
下面是我写的代码:
/// <summary> /// 获取Ip4地址 /// </summary> /// <param name="port"></param> /// <returns></returns> private IPEndPoint getIpAdderss(int port) { IPEndPoint result = null;
//取得本机IP地址列表 IPAddress[] ipEntry = Dns.GetHostEntry(Dns.GetHostName()).AddressList; foreach (IPAddress var in ipEntry) {
//排除ipv6网卡 if (!var.IsIPv6LinkLocal) { result = new IPEndPoint(var, port); break; } }
//如果电脑有多个ip4网卡该怎么排除呢?? return result; }
跪求大神帮忙。。。
问题已解决 谢谢大家的激烈讨论
如果有多个,就一个个的试,如果可以连通并且完成数据库传递,就break了,这样行不
这是我相到最糟糕的方案 就是想知道有没有其他的方案
@LYDNG: 坐等高人了。我觉得这方案还行吧,一个机器也不可能装太多网卡
上面的代码是在客户端的还是在服务端的?
如果在客户端的,那么为什么要拿到客户端的IP地址呢,直接连接到服务端的IP即可。
如果是在服务端的,获取IP地址是做什么用的?用来监听还是其它?
是在客户端的 我需要获取该IPEndPoint来监听该端口 以获取服务器发送给客户端的消息 不然怎么收到服务器的消息呢?
@LYDNG: 使用下面的语句监听所有IP,不需要管它有多少个网卡
result = new IPEndPoint(IPAddress.Any, port);