C# — WinForm TCP连接IPv4和IPv6的判断

大家都知道,

XP系统默认使用的是IPv4格式的IP地址,

而Win7系统默认使用的是IPv6格式的IP地址。

所以有些关于TCP连接的WinForm系统,在XP下可能运行正常,但在Win7下却不能运行。

故,需要在进行TCP连接的时候,需要对IP地址格式进行一个判断。

代码如下所示:

//获取本机所有IP地址
IPAddress[] localips = Dns.GetHostAddresses(Dns.GetHostName());
foreach (IPAddress ip in localips)
{
     //找到本地所有IP地址符合IPV4协议的IP地址
    if (ip.AddressFamily == AddressFamily.InterNetwork)
     {
           IPAddress ip4;
           ip4 = ip;
           listener = new TcpListener(ip4, 5000);
           listener.Start();
           break;
      }
}

C# — WinForm TCP连接IPv4和IPv6的判断

时间: 2024-11-05 12:24:34

C# — WinForm TCP连接IPv4和IPv6的判断的相关文章

TCP连接在没有数据交互式判断连接断开

非阻塞模式下,建立连接没有调用send()和recv()进行数据交互的情况怎么判断服务端连接主动断开? 通过recv()函数,没有数据时返回-1,服务端断开返回0,通过返回0判断服务端是否断开 unsigned long  u32NonBlock = 1; if ( ioctlsocket(pDlg->m_s32Socket, FIONBIO, &u32NonBlock) )     // 非阻塞 { closesocket(pDlg->m_s32Socket); pDlg->m

c#网络通信框架networkcomms内核解析之十一 TCP连接与UDP连接

连接是通信的核心 客户端一般只会有一个连接 服务器端会维护成千上万的连接 在服务器端连接的维护工作是由NetworkComms静态类来完成的,当有新的客户端请求,服务器上会创建相应的连接,并把连接注册到NetworkComms静态类中.当连接断开后,NetworkComms通信框架会自动把相应连接的引用从NetworkComms静态类中删除. 连接的类图: 在V3以上版本中,数据监听部分已从Connnection类中提取出去成为一个单独的类: TCPConnectionListener   ,使

IPv4和IPv6的区别

在windows 7以上系统中,在设置本地IP地址的时候经常会看到同时含有IPv4协议项与IPv6协议项,并不同于以往windows xp系统中仅有TCP/IP协议项,下面介绍下IPv4与IPv6有什么区别. 目前的全球因特网所采用的协议族是TCP/IP协议族.IP是TCP/IP协议族中网络层的协议,是TCP/IP协议族的核心协议.目前IP协议的版本号是4(简称为IPv4),发展至今已经使用了30多年.IPv4的地址位数为32位,也就是最多有2的32次方的电脑可以联到Internet上,近十年来

《网络编程》IPv4 与 IPv6 相互操作

前言 由于互联网终端不断增加,IPv4 地址长度(32位)已不能够满足要求,所以出现了 IPv6地址(128位),但是现有应用程序大部分还是采用 IPv4 地址形式,所以必须解决 IPv4 与 IPv6 之间的相互操作,使现有基于 IPv4 的应用程序能够与基于 IPv6 的应用程序相互通信.那么我们怎么实现 IPv4 客户端与 IPv6 服务器.IPv6 客户端与 IPv4 服务器之间的通信. IPv4 客户端与 IPv6 服务器 假设我们主机是运行双栈,即存在 IPv4 协议栈和 IPv6

当P4遇见NAT64,UCloud如何快速从IPv4向IPv6演进?

IPv4发展到今天已存在着诸多缺陷,比如地址枯竭.安全和服务质量难以保证.路由膨胀等,这些问题将极大制约云计算等相关IT行业的发展.IPv6以其更大的地址空间.更高的安全性等特点,能够很好的解决IPv4这些缺陷. UCloud于2018年上半年开始研发公网入口的IPv6转换,依托NAT64技术和可编程P4交换机,现已成功推出了免费的UCloud公网入口IPv6转换服务.该产品功能简洁易用,申请EIP后一键开启IPv6转换,无需任何改造,即可对外提供IPv6的访问.目前,UCloud IPv6转换

ipv4与ipv6 Inet4Address类和Inet6Address类

在设置本地IP地址的时候,一些人会疑惑IPv4与IPv6的区别是什么?下面由学习啦小编为你分享ipv4与ipv6的区别的相关内容,希望对大家有所帮助. ipv4与ipv6的区别 在windows 7以上系统中,在设置本地IP地址的时候经常会看到同事含有IPV4协议项与IPV6协议项,并不同于以往windows xp系统中仅有TCP/IP协议项,不少朋友都觉得比较奇怪,询问编辑IPv4与IPv6的区别,下面编辑就为大家权威的介绍下IPv4与IPv6有什么区别. 目前的全球因特网所采用的协议族是TC

TCP连接的状态详解以及故障排查

转载自CSDN博客:http://blog.csdn.net/hguisu/article/details/38700899 TCP状态 TCP状态迁移路线图 TCP连接建立三次握手 TCP连接的终止四次握手释放 同时打开 同时关闭 TCP通信中服务器处理客户端意外断开 Linux错误信息errno列表 我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助.(总结网络上的内容) 1.TCP状态 了解TCP之前,先了解几个命令:   linux查看tcp的状态命令: 1).netst

TCP 连接与TCP keep alive 保活检测机制

生产环境中一台2核4G的linux服务器TCP连接数时常保持在5-7w间徘徊,查看日志每秒的请求数也就100-200,怎么会产生这么大的TCP连接数.检查了下客户端上行的HTTP协议,Connection 头字段是Keep-Alive,并且客户端在请求完之后没有立即关闭连接.而服务端的设计也是根据客户端来的,客户端上行如果Connection:Keep-Alive,服务端是不会主动关闭连接的.在客户端与服务端交互比较频繁的时候,这样的设计还是比较合理的,可以减少TCP的重复握手.显然如果只交互一

转载:TCP连接的状态详解以及故障排查

FROM:http://blog.csdn.net/hguisu/article/details/38700899 该博文的条理清晰,步骤明确,故复制到这个博文中收藏,若文章作者看到且觉得不能装载,麻烦请告知,谢谢. 我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助.(总结网络上的内容) 1.TCP状态 linux查看tcp的状态命令: 1).netstat -nat  查看TCP各个状态的数量 2).lsof  -i:port  可以检测到打开套接字的状况 3).  sar