补充50分 - CGI中:如何获得客户端的计算机名(标识而非IP地址)?(50分)

  • 主题发起人 主题发起人 pegasus
  • 开始时间 开始时间
P

pegasus

Unregistered / Unconfirmed
GUEST, unregistred user!
njgyn要我补分,分配方案如下
小天30
tqz 20
请二位登记领分
 
有分啊?呵呵,不客气了
 
小天呢?
 
?没从我的分里扣?嘻嘻,那我也耍个赖了,谢谢“手下留情”哦。。。:)
 
小天呢??

 
闹半天没有解答出来呀?
我加100分给真正解决问题的人!
加油:)
 
??
不是说用GetHostByAddr可以解决问题么,只是没有现成的Server环境变量用罢了
 
hehe, GetHostByAddr 需要多长时间才能返回结果,根本不实用。
另外,ASP中呢?
请再加油想一想:)
 
不实用?
GetHostByAddr 的返回时间取决于DNS上面是不是已经有了有效的解析结果了
我认为这是唯一的正解,其它的解法肯定会拐弯抹角地用到GetHostByAddr,:)
 
不知你是否试过enterprice server,那上面用javascript应当可以
获得正确hostname吧。
另外,sock一般在连接时已经发送HOSTNAME给SERVER了,只是WEB SERVER是否
提供给你罢了。
另外,在TCPIP连接时已把NETADDRESS发给你,是否可以通过IP得到NETADDRESS呢?
不限在WEB情况下。
 
连接的时候知道对方的地址,但是不知道HostName,
客户端的浏览器连接到服务器的时候是不会把自己的HostName告诉服务器的
我觉得你的例子里面一定转弯抹角地用了个hostByAddress而没有说而已,客
户端倒是需要把服务端的HostNAME用连接发送过去,初看起来很奇怪,但这就
是服务端能够实现虚拟主机的关键

所谓的NetAddress一般就是指IP地址

 
1. NetAddress 一般都指网卡 MAC ADDRESS;

2. 连接时确实会看到对方的HostName,这一点,我不知你是否有Mail
Server,在mail连上时会立刻显示出连接主机的HOSTNAME,如果是HOSTBYADDRESS
的话,那么根本不会立即显示,你也许会说是CACHE,那么第一次连接就非常迅速
怎么解释?HEHE,所以,我想,一定是IIS没有把这一信息显示给你罢了。应当
其它WEBSERVER支持此功能。

3. 任何TCPIP连接时都是把MACADDRESS同时发送,这一点任何有关网络的书中都
有说到,问题是如何获取这一信息? 请多考虑!
 
这三条全是错的..

哎。。。
 
这样, 不管错不错, 如何能得到对方MACADDRESS, 通过IP或HOST?(局域网即可).
 
有分,他们不给我给.
 
一个例子:
function TWebStatistic.GetRemoteHost(RemoteAddr : String): String;
var
SockAddrIn : TSockAddrIn;
HostEnt: PHostEnt;
WSAData: TWSAData;
begin
if (RemoteHost='127.0.0.1') then
result:=''
else
begin
WSAStartup($101, WSAData);
SockAddrIn.sin_addr.s_addr:= inet_addr(PChar(RemoteAddr));
Timer1.Enabled:=True;
HostEnt:= gethostbyaddr(@SockAddrIn.sin_addr.S_addr, 4, AF_INET);
Timer1.Enabled:=False;
if HostEnt<>nil then
result:=StrPas(Hostent^.h_name)
else
result:='';
WSACleanup;
end;
end;

 
我来迟了
 
多人接受答案了。
 
后退
顶部