aushqh(You Will Miss Me!) , 說話要注意, 如果答錯了就要被你諷刺, 誰還敢回復你的問題?? ksaiy(消失在人海) 的鏈接打不開, why???就我知道, 還沒有辦法直接在內網得到, 隊非直接與route 內部通訊! 懂點網絡協議的人應該理解! 但也不是說沒法, 有時,我們打開某個網站的網頁, 上面會顯示你的IP是多少, 下面就是根據這個原理來實現The following Delphi code uses ICMP and SNMP to detect the dynamic IP address of your router when it is connected to a WAN.It first gets the IP address of www.borland.com and then attempts to do a trace route to it. The trace route is only allowed to travel at most 1 hop. In a corporate environment, some changes are required in order to detect the router for the corporate environment.Since the first hop is definitely the router's IP address, it assumes it has gotten the gateway IP address.It then uses the SNMP protocol to discover the dynamic IP address that the router has been assigned with.var GatewayIP, BorlandIP: string; DynamicIP, origOid: string; I: Integer; SNMP: TIdSNMP; ICMP: TIdIcmpClient; begin SNMP := TIdSNMP.Create(nil); ICMP := TIdIcmpClient.Create(nil); try // Step 1: Get the Gateway IP address // Assumes the Gateway is only 1 connection away from the machine BorlandIP := GStack.ResolveHost('www.borland.com'); ICMP.Host := BorlandIP; ICMP.TTL := 1; ICMP.ReceiveTimeout := 5000; ICMP.Ping; GatewayIP := ICMP.ReplyStatus.FromIpAddress; // Step 2: Query the gateway using SNMP // This assumes the gateway is the immediate connection to the Internet // or leads to a xDSL modem running in bridging mode that connects to // the Internet SNMP.Community := 'public'; SNMP.Host := GatewayIP; SNMP.Query.Clear; origOID := '1.3.6.1.2.1.4.20.1.1'; SNMP.Query.MIBAdd(origOID, ''); SNMP.Query.PDUType := PDUGetNextRequest; while SNMP.SendQuery do begin if Copy(SNMP.Reply.MIBOID[0], 1, Length(origOID)) <> origOID then Break; // For each result, check that it is not the Gateway IP // If it is not, assume that it is the Dynamic IP // If a gateway has multiple IP addresses assigned, the last // IP address will be considered to be the Dynamic IP for I := 0 to SNMP.Reply.ValueCount - 1 do if SNMP.Reply.Value[I] <> GatewayIP then DynamicIP := SNMP.Reply.Value[I]; SNMP.Query.Clear; SNMP.Query.MIBAdd(SNMP.Reply.ValueOID[0], ''); SNMP.Query.PDUType := PDUGetNextRequest; end; finally ICMP.Free; SNMP.Free; end;
你熟悉网络通讯? 才怪?
-----------------------------------------
NAT技术上说得很明白! 你熟悉P2P吗?????
ksaiy(消失在人海) 的鏈接打不開, why???就我知道, 還沒有辦法直接在內網得到, 隊非直接與route 內部通訊! 懂點網絡協議的人應該理解!
但也不是說沒法, 有時,我們打開某個網站的網頁, 上面會顯示你的IP是多少, 下面就是根據這個原理來實現The following Delphi code uses ICMP and SNMP to detect the dynamic IP address of your router when it is connected to a WAN.It first gets the IP address of www.borland.com and then attempts to do a trace route to it. The trace route is only allowed to travel at most 1 hop. In a corporate environment, some changes are required in order to detect the router for the corporate environment.Since the first hop is definitely the router's IP address, it assumes it has gotten the gateway IP address.It then uses the SNMP protocol to discover the dynamic IP address that the router has been assigned with.var
GatewayIP, BorlandIP: string;
DynamicIP, origOid: string;
I: Integer;
SNMP: TIdSNMP;
ICMP: TIdIcmpClient;
begin
SNMP := TIdSNMP.Create(nil);
ICMP := TIdIcmpClient.Create(nil);
try
// Step 1: Get the Gateway IP address
// Assumes the Gateway is only 1 connection away from the machine
BorlandIP := GStack.ResolveHost('www.borland.com');
ICMP.Host := BorlandIP;
ICMP.TTL := 1;
ICMP.ReceiveTimeout := 5000;
ICMP.Ping; GatewayIP := ICMP.ReplyStatus.FromIpAddress; // Step 2: Query the gateway using SNMP
// This assumes the gateway is the immediate connection to the Internet
// or leads to a xDSL modem running in bridging mode that connects to
// the Internet SNMP.Community := 'public';
SNMP.Host := GatewayIP;
SNMP.Query.Clear;
origOID := '1.3.6.1.2.1.4.20.1.1';
SNMP.Query.MIBAdd(origOID, '');
SNMP.Query.PDUType := PDUGetNextRequest; while SNMP.SendQuery do
begin
if Copy(SNMP.Reply.MIBOID[0], 1, Length(origOID)) <> origOID then
Break; // For each result, check that it is not the Gateway IP
// If it is not, assume that it is the Dynamic IP
// If a gateway has multiple IP addresses assigned, the last
// IP address will be considered to be the Dynamic IP
for I := 0 to SNMP.Reply.ValueCount - 1 do
if SNMP.Reply.Value[I] <> GatewayIP then
DynamicIP := SNMP.Reply.Value[I]; SNMP.Query.Clear;
SNMP.Query.MIBAdd(SNMP.Reply.ValueOID[0], '');
SNMP.Query.PDUType := PDUGetNextRequest;
end;
finally
ICMP.Free;
SNMP.Free;
end;
-------------------------你把他说明白,我给你200分
等我做出P2P的软件再来找你们算帐!
---------------------声明,对你的短消息只有一个,
另外给你点私人看法:你之前的回复会让人觉得你心智还没发育完善的怎么弄到这么多分!
这时哪个管理员做得事情!为人处事吗,我相信彼此彼此,不想上下啦!反正我从来就没有在DELPHI解决什么问题,不想浪费时间了!
但也不是說沒法, 有時,我們打開某個網站的網頁, 上面會顯示你的IP是多少, 下面就是根據這個原理來實現;------------------------------------------------------------
你的这种思维方式就不对,一定再内网获取吗,我不可以换一种方式吗?
我明明把贴子放在"网络与分布式"栏,
可你非要把它移到非技术区,难怪现在DELPHI论坛这么冷清!
--------------
高手们,我的非技术问题我自己解决了,NAT,我在2年前我就自己调试过,
告别DELPHI版主--aiirii(ari-爱的眼睛) !非技术问题非技术问题非技术问题非技术问题非技术问题非技术问题非技术问题???????
ksaiy (20):连接是有效的,而并非某某高人说是无效的连接;除非他不在大陆就打不开该连接,只不过那两个东西我都知道,所以只给20分;而其他并非涉及P2P,所以理所当然不给分!
---------------------------------------不管你质疑我的个人素质也好,还是你水平高也好;
反正现在的论坛上口水比墨迹多已经是无可非议!
有点讨论价值的话题竟然被移到非技术区,对这些做法我无话可说!至于某某版主的素养简直让人呕心.(不是针对 ehom(?!) ,请你不要误解)
同时请给出移贴理由.
引因:
楼主:我想楼主刚开始对回复的词句是直接了一点.原理上讲可以更委婉一些,也知道你的出发点是希望有实质性的回复,希望尽管解决问题.这本无可厚非.
对于版主:我想大家都是来交流技术的,没有必要这么严肃吧.尽管版主希望是看到一个平和的气氛,
但动不动就移贴,删除人家的回复(我就有一次被删,扣了信誉),希望 能跟出理由,以理服人,另外,私下
觉得,正真好的论坛,管理者(版主--管理方面)应该是不可见的.权威不是什么好东西,对于CSDN来说.结果:从问一个问题搞得大家都不开心,何必?! 只打五十大板 (第三者)
第一, 我和 ehom(?!) 并不存在什麼大的交情, 只是就事論事, 我也不覺得我說的話, 會讓人那麼激動反應!第二, 我轉貼前, 已經發過消息讓 aushqh 給了合理的解釋理由, 不然我會處理, 他自己也引用在消息中回復給我了, 我不明白, 還老發消息問是不是我處理的, 是什麼意思?? 我不知道, 你有否向我解釋;>>>>发誓不在DELPHI版再问问题!!!!!!!!!!!!!!!!!!!!!
>>就算你不想在 delphi 出現, 我還想問你給分的根據?? 如果沒有一個合理的答復, 這個問題我將轉
>>到非技術, 我覺得給分不合理!!第三, aushqh老是說要成為真正的程序員, 給我點顏色看, 我知道你還不是真正的程序員, 而我是, 這是我們的差別, 很多問題, 不論是技術的, 還是非技術的, 你的理解, 也和我有很大的差距, 我只是這麼覺得; 第四, aushqh 口口聲聲說不在D版出現, 我也看過太多這樣的人, 昨天還發貼說告別XXX, 第二天又在XXX裹面大出風頭了, 所以, 我對這種話不太感冒;第五, 你說過要向CSDN投訴, 我也支持你, 但不知你行動了沒有??對于 phoenixsharp(小星星), 請自己衡量你的回答問題的質量!
我不想評判技術上的東西了, 因為, 我不想教給請這個問題的人任何有用的東西!我現在還是覺得我的處理沒有問題!!!
首先你的转贴并没有取的我意见,
并且你的消息我并没有收到!你发的消息是在13:00多,到14:00你就给转贴了!当我登陆CSDN时我只知道被你扣分了!--------------------------------------我还怀疑你的理解能力,我说不问题就说我不在D版出现?----------------------------------------------总版主也说过此事情,并非我一人的错!
如果所有的管理员都是这样的话我无话可说!-----------------------------------------对于你的有用东西有多少我也不想得到,
你在论坛的回复我也看了很多,具体怎样我心里有数!不管我的水平怎样,我的目标就是超越!
不管你怎么瞧我这虾米,我会朝着我的目标走的!
所谓无数和多次引导我不知道某些是怎么计数和思维的!不要无味说一些不切实际的话!第一:我发回复短信是在贴子被转以后,而且并没有收到上叙短信,而是在昨天才发现,所以才又回复了一次!不然我也不会去问是不是 ehom(?!) 把我的贴子转掉了!
如果要说短信里面的内容的话,大可以贴出来给大家看,有几封??
还有人竟然说要删ID呢!第二:>>>>发誓不在DELPHI版再问问题!!!!!!!!!!!!!!!!!!!!!
当然有我的理由:
我发贴:一般问到底层的问题就没有解决过,而且我一问问题老是把我的信誉分减了又加,加了又减,这样的交流还有什么意思!
(我本来不想对DELPHI做什么评论,这也许根DELPHI本身的设计有关,它底层都封装起来了,所以交流起来可能不是那么方便)
至于某某人说说今天不在D版出现,明天又来,造成这种现象的原因完全是他本人吗?我想某些人也该思考一下了!
在某某人没有从版主职位上下来的话,我是不会来发问的了,很确定!第三:在CSDN上讨论问题的话,人家没有义务回答是正常,但人家给分是人家的权利,正如商场上一样,不可能人家的交易额大,不可能因为第三者就取消交易吧!(就如我们的软件交易一样,人家还认为暴利呢,但他们敢说什么吗)
这个道理很简单,况且我并没有超出CSDN给分的范围!而且我只给有点价值的观点!
所以我觉得我的给分合理!没有什么不妥之处!
属于正常的你情我愿,没有谁能够干涉!
如果象这贴这样处理的话,我还要问某某人得来的专家分都符合这个标准吗?没又高分的激励哪里来的新高手!(商场上也一样)第四:学业有先后,术业有专攻!
我们传统的文化都是这样的,况且某人用的文字还是Traditional,这个也不懂,还说不管技术非技术方面都强,嗯这我不想再说了..。
在当今中国的程序员中不乏将才,但是帅才少之又少,何味帅才我相信大家很清楚!
而且现实中自认认为了不起的人我也见了不少!我也不想多加评论了....,更不要说感冒了^_^!至于技术上的交流,我还不屑和某某交流呢!