
超时是SOCKET封装的,是不能设置的,只能用系统默认的超时时间,其实你没必要去修改超时时间,如果超时会自动抛出异常,捕捉就可以了
try
{
IPHostEntry ip = DnsResolve(">需要注意的是,域名不能加>
不同的域名注册商提供的域名隐私保护服务略有不同,但大致思路都是在Whois数据库中将你的信息隐藏起来,有些信息(如邮箱以及注册人、公司)则是使用注册商自己的信息。这样一来,别人通过一般的Whois查询工具就无法查到
域名注册信息保护服务是一种域名增值服务,即通过一定的技术手段,适当隐藏域名注册联系人、域名管理联系人、域名技术联系人、域名缴费联系人信息(即,使用户提交的有关注册信息不在域名whois数据库中公开显示)。当受到保护时,别人在查询该域名时,无法显示域名的相关信息,以便起到信息保护作用。
域名注册信息保护服务,可以适用于不愿意公开个人隐私信息,或深受垃圾邮件困扰的个人及公司域名持有者。(其实域名注册数不胜数,实际上使用域名隐私保护却并不多)
由于Internet的历史原因,apin负责整个网络IP的整体规划以及北美区
还有部分非洲地区的IP分配管理,与此相应的是,whoisapinnet是IP
whois的root
server,标准的IP
whois查询方法是,首先向whoisapinnet查询某个IP属于哪个大区,然后再向该区的whois
服务器查询此IP的whois详细信息。
目前负责
IPV4的大区
whoisarinnet
美洲区
北美
whoisapnicnet
亚太区
包括亚洲和澳大利亚
whoisripenet
欧洲区
欧洲/中东(西亚)/北非
whoislacnicnet
拉美区
拉丁美洲和加勒比海区域
非洲网络的IP查询也在whoisarinnet
向某个whois服务器提交whois查询的过程
打开一个到whois服务器的43端口的连接,然后发送要查询的域名
和一个回车换行。如果要查询多个域名,请用空格分开然后从sokect中读取结果。最后服务器将自动断开连接。
用PHP实现
1验证IP(用
ip2long代替
ereg)
2向
whoisarinnet查询,如果数据库中没有相关信息,会给出一个Referral
Server的URL,格式如下
ReferralServer:
然后根据此信息,继续查询
代码如下
whoisipphp
<php
include_once
"langincphp";
$IP
=
isset($_GET['ip'])$_GET['ip']:'blank';
if
(-1
===
ip2long($ip))
die(str_replace('%IP%',
$IP,
$Text['ip_invalid']));
echo
GetWhois($IP);
function
GetWhois($IP)
{
global
$Text;
$rootwhois
=
'whoisarinnet';
$buffer
=
str_replace('%SERVER%',
$rootwhois,
$Text['sock_connect']);
$buffer1
=
ReadSocket($rootwhois,$IP);
if
($buffer1
!==
'')
{
$whois
=
SubStrByTag("ReferralServer:
whois://","\n",$buffer1);
//remove
port
number
":43";
if
(
($pos=strpos($whois,":"))
!==
FALSE)
{
$whois
=
substr($whois,
0,$pos);
}
if
($whois
!==
'')
{
$buffer
=
str_replace('%SERVER%',
$whois,
$Text['sock_connect']);
$buffer
=
ReadSocket($whois,$IP);
}
else
{
$buffer
=
$buffer1;
}
}
return
nl2br($buffer);
}
function
SubStrByTag($firstTag,$secondTag,&$longStr)
{
$firstPos
=
strpos
($longStr,$firstTag);
$ret
=
'';
if
($firstPos
!==
FALSE)
{
$secondPos
=
strpos
($longStr,$secondTag,$firstPos);
if
($secondPos
!==
FALSE)
{
$firstPos
+=
strlen($firstTag);
$ret
=
substr($longStr,$firstPos,$secondPos-$firstPos);
}
}
return
$ret;
}
function
ReadSocket($whois,$ip)
{
global
$Text;
$buffer
=
'';
if
(!$sock
=
fsockopen(
$whois,
43,
$errNum,
$errStr,
20))
{
$buffer
=
str_replace('%SERVER%',
$whois,
$Text['sock_fail']);
}
else
{
fputs($sock,"$ip\n");
//$buffer
=
fread($sock,
8192);
while(!feof($sock))
$buffer=fgets($sock,
8192);
fclose($sock);
}
return
$buffer;
}
>
语言文件:
langincphp
<php
$Text
=
Array(
'ip_invalid'=>'I
want
to
get
a
valid
IP,
but
it
is
[%IP%]',
'sock_connect'=>'Ask
%SERVER%
',
'sock_fail'=>'Cannot
connect
to
the
host:%SERVER%'
);
>
其他有名的whois服务器
1Tucows
(whoisopensrsnet)
一次只能一个连接
dnsstuff就是查询的它
2BulkRegister
(whoisbulkregiternet)
小心它临时封IP,如果大量连接的话
3Network
Solutions
(whoisnetworksolutionscom)
一天只能查1000次
4Go
Daddy
(whoisgodaddycom)
5whoisabusenet
以上就是关于求一段c#获取域名whois的代码(有超时处理的)全部的内容,包括:求一段c#获取域名whois的代码(有超时处理的)、域名whois信息查询原理、域名的whois信息无法从注册局获取是什么原因等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)