使用以下代码进行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;
}
除了whois.apnic.net之外,工作正常(成熟,arin,lacnic,afrinic)。使用Wireshark我注意到apnic不断增加发送相同的响应。
有谁知道这是为什么?
此外,为什么分配给apnic(103.31.186.82)的IP地址指向位于拉脱维亚的“ISP”的罗马尼亚?
答案 0 :(得分:0)
你以一个\ r \ n顺序喂食:
string strDomain = ip + "\r\n";
试着喂一个\ n:
string strDomain = ip + "\n";
或只是一个\ r:
string strDomain = ip + "\r";
某些whois服务器只响应自己的行结束和/或回车而不是通常的配对,并且它确实依赖于服务器上运行的操作系统。
在不同平台上处理文本文件时大致相同,Windows机器通常倾向于使用双线结尾,Linux / Unix变体......各种各样: - )
有很多原因,但ISP的总部/总部可能位于拉脱维亚,而您用于提供地理信息的查询工具使用的记录中的地址是HQ,而物理IP链接是实际上在你期望的地理区域。