首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从DNS获取IP

从DNS获取IP
EN

Stack Overflow用户
提问于 2015-10-30 17:39:51
回答 1查看 1.6K关注 0票数 1

如何使用TCP创建数据流以查找某个域的IP?在论坛上搜索并尝试这样的方法:

代码语言:javascript
复制
client = new UdpClient();
IPEndPoint ep = new IPEndPoint(IPAddress.Parse("8.8.8.8"), 53);
client.Connect(ep);
String query = "host -T google.com";
byte[] myByte = System.Text.ASCIIEncoding.Default.GetBytes(query);
client.Send(myByte, myByte.Length);
var receivedData = client.Receive(ref ep);

我不明白如何为DNS服务器创建正确的消息。如果有类似HTTP方式的东西存在,那就太好了。

更新:你就是这样做的!

代码语言:javascript
复制
    client = new UdpClient();
    IPEndPoint ep = new IPEndPoint(IPAddress.Parse("8.8.8.8"), 53);
    client.Connect(ep);

    //dynamic dns
    String host1 = "vg.no";
    byte[] hostnameLength = new byte[1];
    byte[] hostdomainLength = new byte[1];


    byte[] tranactionID1 = { 0x46, 0x62 };
    byte[] queryType1 = { 0x01, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
    byte[] hostname = System.Text.ASCIIEncoding.Default.GetBytes(host1.Split('.')[0]);
    hostnameLength[0] = (byte)hostname.Length;
    byte[] hostdomain = System.Text.ASCIIEncoding.Default.GetBytes(host1.Split('.')[1]);
    hostdomainLength[0] = (byte)hostdomain.Length;
    byte[] queryEnd = {0x00, 0x00, 0x01, 0x00, 0x01};
    byte[] dnsQueryString = tranactionID1.Concat(queryType1).Concat(hostnameLength).Concat(hostname).Concat(hostdomainLength).Concat(hostdomain).Concat(queryEnd).ToArray();
    client.Send(dnsQueryString, dnsQueryString.Length);
EN

回答 1

Stack Overflow用户

发布于 2015-10-30 17:56:54

如果问题只是“从C#中的DNS获取域名IP”,那么简单的答案是

代码语言:javascript
复制
var res = Dns.GetHostEntry("google.com").AddressList;

此语句返回具有解析域名的IP地址的字符串数组。

如果问题更复杂“使用TCP/IP协议从C#中的DNS获取域名IP”,请查看here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33441867

复制
相关文章

相似问题

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