R rainbar Unregistered / Unconfirmed GUEST, unregistred user! 2007-07-15 #1 大家好,在玩游戏的时候,很多游戏客户端都有显示网络延迟的功能,我想问一下在DELPHI中如何得到客户端连接到服务器特定端口的网络延迟时间啊?
I iceapi Unregistered / Unconfirmed GUEST, unregistred user! 2007-07-16 #3 知道 ping 吗? 建立用 raw_sock 写吧.
U ufo Unregistered / Unconfirmed GUEST, unregistred user! 2007-07-16 #4 游戏服务器都是自己写的,这还不简单,发个特定的数据包,同时记下发包时间,然后收到该特定包的回复后,即可算出来回所花的时间了啊。
R rainbar Unregistered / Unconfirmed GUEST, unregistred user! 2007-07-16 #6 to:iceapi 用raw_sock写?我不会啊,能不能给个源码啊? to:ufo! 因为我刚才开始学习DELPHI,对这方面还不是太了解,能不能给个简单的代码什么的? 我用了一个FUNCTION 代码: function TFormMain.IdIcmpPing(SvrIP: string;SvrPingPort: Integer):string; begin idIcmpSvr.Host := SvrIP; idIcmpSvr.Port := SvrPingPort; idIcmpSvr.BufferSize := 0; idIcmpSvr.ReceiveTimeout := 100; idIcmpSvr.Ping; Application.ProcessMessages; Result := IntToStr(idIcmpSvr.ReplyStatus.MsRoundTripTime); end; 然后再读出服务器的IP地址后调用: 代码: .... SvrIP := lblItem[i][1]; SvrPingPort :=StrToInt(lblItem[i][3]); Caption := IdIcmpPing(SvrIP,SvrPingPort); .... 但是得到的结果很令人失望。随着 idIcmpSvr.ReceiveTimeout := 100; 这里的值不同,得到的结果都是不同的。如果这里是100的话,那最后的结果都在140左右,如果改成1000的话,那得到的结果都是在1140左右。怎么会这样呢?
to:iceapi 用raw_sock写?我不会啊,能不能给个源码啊? to:ufo! 因为我刚才开始学习DELPHI,对这方面还不是太了解,能不能给个简单的代码什么的? 我用了一个FUNCTION 代码: function TFormMain.IdIcmpPing(SvrIP: string;SvrPingPort: Integer):string; begin idIcmpSvr.Host := SvrIP; idIcmpSvr.Port := SvrPingPort; idIcmpSvr.BufferSize := 0; idIcmpSvr.ReceiveTimeout := 100; idIcmpSvr.Ping; Application.ProcessMessages; Result := IntToStr(idIcmpSvr.ReplyStatus.MsRoundTripTime); end; 然后再读出服务器的IP地址后调用: 代码: .... SvrIP := lblItem[i][1]; SvrPingPort :=StrToInt(lblItem[i][3]); Caption := IdIcmpPing(SvrIP,SvrPingPort); .... 但是得到的结果很令人失望。随着 idIcmpSvr.ReceiveTimeout := 100; 这里的值不同,得到的结果都是不同的。如果这里是100的话,那最后的结果都在140左右,如果改成1000的话,那得到的结果都是在1140左右。怎么会这样呢?