0

使用以下代码进行 whois 查询:

public static string LookUp(string ip, string whoisServer){
    string buff = string.Empty;
    string strDomain = ip + "\r\n";
    byte[] arrDomain = Encoding.ASCII.GetBytes(strDomain);
    using (TcpClient tcp = new TcpClient(whoisServer, 43)) {
       using (Stream tcpStream = tcp.GetStream) {
          using (StreamReader objSR = new StreamReader(tcpStream, Encoding.ASCII)) {
            tcpStream.Write(arrDomain, 0, strDomain.Length);
            buff = objSR.ReadToEnd;
          }
       }
    }
    return buff;
   }

工作正常(成熟,arin,lacnic,afrinic),除了 whois.apnic.net。使用 Wireshark,我注意到 apnic 不断发送相同的响应以增加间隔。

有人知道为什么吗 ?

此外,为什么分配给 apnic (103.31.186.82) 的 IP 地址会指向具有位于拉脱维亚的“ISP”的罗马尼亚?

4

1 回答 1

0

您以 \r\n 顺序喂食的地方:

string strDomain = ip + "\r\n";

尝试只喂食 \n:

string strDomain = ip + "\n";

或者只是一个 \r:

string strDomain = ip + "\r";

一些 whois 服务器只响应行尾和/或回车而不是通常的配对,它通常取决于服务器上运行的操作系统。

在不同平台上处理文本文件时几乎相同,Windows机器通常倾向于使用双行结尾,Linux / Unix变体......变化:-)

此外

原因有很多,但很可能是 ISP 的总部/总部位于拉脱维亚,而您用来提供地理信息的查询工具所使用的记录中的地址是总部地址,而物理 IP 链接实际上在您期望的地理区域。

于 2013-05-29T19:26:35.257 回答