首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何实现TcpClient、IPEndPoint、IPAddress对象的实例化IPv4和IPv6地址作为字符串传递时都要实例化

如何实现TcpClient、IPEndPoint、IPAddress对象的实例化IPv4和IPv6地址作为字符串传递时都要实例化
EN

Stack Overflow用户
提问于 2019-06-25 08:30:48
回答 2查看 695关注 0票数 1

对于我的.NET C#应用程序,我们有需要通过TCP/IP协议进行通信的模块。

我决定使用微软的System.Net.Sockets应用程序接口

由"TcpListener“类表示的模块可以是

基于-IPv4地址的-IPv6地址

问题是,使用"TcpClient“类的模块需要以这样一种方式实例化"TcpClient”,以便智能地接受IPv4或IPv6地址(最初作为字符串传递)

更详细地说,使用"TcpClient“类的模块可以有一个如下所示的构造函数:

代码语言:javascript
复制
public ClientModule(string ipV4OrIpV6Address, int portNumber){
………………………
…………..
……….
}

当我查看微软的文档( https://docs.microsoft.com/en-us/dotnet/api/system.net.sockets.tcpclient.-ctor?view=netframework-4.8#System_Net_Sockets_TcpClient__ctor_System_Net_IPEndPoint_ )时,我发现了以下TcpClient构造函数:

TcpClient(IPEndPoint)

初始化TcpClient类的新实例并将其绑定到指定的本地终结点。

此外,我试图搜索更多关于实例化IPEndPoint类的内容,结果偶然发现( https://docs.microsoft.com/en-us/dotnet/api/system.net.ipendpoint.-ctor?view=netframework-4.8#System_Net_IPEndPoint__ctor_System_Net_IPAddress_System_Int32_ )

每个模块将位于不同的物理计算机服务器上。

我如何实例化微软的IPAddress对象,使其足够智能地将IPv4和IPv6地址作为字符串处理,而不管哪个作为参数传递?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-25 09:09:08

TcpClient(string, int)构造函数最终对传入的字符串值调用IPAddress.TryParse(string),它将尝试将结果同时应用于IPv4和IPv6套接字。

所以,你不应该做任何特殊的事情。只需将IP地址传递给TcpClient(string, int)构造函数,并让TcpClient类处理它(实际上,Dns类最终完成地址解析)。应该不需要进行任何显式工作来处理IPv6地址。自己解析地址只是浪费代码和时间。

票数 2
EN

Stack Overflow用户

发布于 2019-06-25 08:41:33

使用IPAddress.Parse(string ipAddress)构建终结点。

它接受一个包含IPv4点分十进制符号或IPv6冒号分隔地址字符串的字符串,并返回一个System.Net.IPAddress

代码语言:javascript
复制
public void ClientModule(string ipV4OrIpV6Address, int portNumber)
{
   IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(ipV4OrIpV6Address), int port); 
TcpClient client = new TcpClient(endpoint);
// Do something with the client
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56745408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档