我正在尝试创建一个应用程序,我必须使用WHOIS来获取我需要的一些信息。
为了获取WHOIS信息,我使用了我在这里找到的这个函数,并做了一些调整:
string Whois(string domain, string whoisServer = "whois.iana.org")
{
string toReturn = "";
TcpClient tcpClinetWhois = new TcpClient(whoisServer, 43);
MemoryStream memoryStreamWhois = new MemoryStream();
Task copying = tcpClinetWhois.GetStream().CopyToAsync(memoryStreamWhois);
StreamWriter streamWriter = new StreamWriter(tcpClinetWhois.GetStream());
streamWriter.WriteLine(domain);
streamWriter.Flush();
copying.Wait(3000);
toReturn = Encoding.ASCII.GetString(memoryStreamWhois.ToArray());
if (toReturn.Contains("refer:"))
{
toReturn = Whois(domain, toReturn.Split('\n').Where(W => W.StartsWith("refer:")).Select(R => R.Replace("refer:", "").Trim()).First());
}
return toReturn;
}
当我运行它的时候,它对大多数TLD都有效,比如.com或.org,但对. co.uk或.network以及其他可能的TLD无效。我不知道为什么它不能工作,因为为TLD选择了正确的WHOIS服务器。我也没有收到任何错误。
我正在使用.Net7.0和我的Android 11手机进行测试。
我已经在同一个网络上用完全相同的域测试了这个完全相同的功能,但是在一个控制台应用程序中没有任何问题!除了我在Xamarin应用程序中尝试这个功能外,一切都工作正常。
1条答案
按热度按时间ruarlubt1#
如果这是Xamarin.Android中的一个bug,我可以使用一个带有Web API的公共WHOIS服务器,或者自己创建一个运行该函数的WHOIS服务器,然后让我的应用程序调用它。