HttpWebRequest怎么获取当前连接的ip

时间:2022-12-29 13:49:54
写了个小程序下载指定url的文件
发现url文件是缓存在cdn下面的,每次获取可能连到不同的ip,我现在想获取到当前下载的地址ip,查了一堆资料都没有找到。。。c#能实现这样的需求么?
下面是下载部分的代码
//打开网络连接
                HttpWebRequest myRequest = (HttpWebRequest)HttpWebRequest.Create(url);
                if (SPosition > 0)
                    myRequest.AddRange((int)SPosition);             //设置Range值
                //向服务器请求,获得服务器的回应数据流
                Stream myStream = myRequest.GetResponse().GetResponseStream();
                //定义一个字节数据
                byte[] btContent = new byte[1024];
                int intSize = 0;
                intSize = myStream.Read(btContent, 0, 1024);
                int startTime=Environment.TickCount;
                while (intSize > 0)
                {
                    FStream.Write(btContent, 0, intSize);
                    intSize = myStream.Read(btContent, 0, 1024);
                    int useTime=Environment.TickCount - startTime ;
                    if ((speed>0)&&(useTime < (1000 / speed)))//speed小于等于0的话则取消限速
                    {
                        Thread.Sleep(1000 / speed);
                    }
                    startTime = Environment.TickCount;
                }
                //关闭流
                FStream.Close();
                myStream.Close();
                flag = true;        //返回true下载成功

10 个解决方案

#1


ping下HTTP路径

#2


reqest.后面忘了,你可以百度一下。

#3


引用 1 楼 shoppo0505 的回复:
ping下HTTP路径

关键是目标文件是存在cdn上面的,比如ping两次url,会得到两个不同的ip地址,我现在是想获取到实际下载文件的ip,一直没有找到方法,HttpWebRequest中有得到连接ip的属性或方法么?

#4


HttpWebRequest怎么获取当前连接的ip
帮你试出来了。。。
不过我就不明白你要这个IP干嘛

#5


引用 4 楼 crystal_lz 的回复:
HttpWebRequest怎么获取当前连接的ip
帮你试出来了。。。
不过我就不明白你要这个IP干嘛


引用 4 楼 crystal_lz 的回复:
HttpWebRequest怎么获取当前连接的ip
帮你试出来了。。。
不过我就不明白你要这个IP干嘛

产品的奇葩需求呗,非要把下载的ip打到日志里面
我刚测试了一下,这个方法并不是每次都可以获取到ip
HttpWebRequest怎么获取当前连接的ip
我在这里加了断点,发现下载了几个文件才中断,中断的也没有规律,不知道是什么原因

#6


这不行的吧,既然是cdn缓存了,那你http协议握手的基本也是那台缓存服务器,原始文件服务器和你压根没有任何联系,怎么可能获取的到地址

#7


引用 6 楼 xdashewan 的回复:
这不行的吧,既然是cdn缓存了,那你http协议握手的基本也是那台缓存服务器,原始文件服务器和你压根没有任何联系,怎么可能获取的到地址

就是要获取缓存文件的那台服务器的地址呢

#8


引用 7 楼 cuijie09 的回复:
就是要获取缓存文件的那台服务器的地址呢

那每次变不是很正常的事嘛,既然cdn又不会只有一台

#9


引用 8 楼 xdashewan 的回复:
Quote: 引用 7 楼 cuijie09 的回复:

就是要获取缓存文件的那台服务器的地址呢

那每次变不是很正常的事嘛,既然cdn又不会只有一台

所以说是奇葩需求嘛,能实现么?

#10


引用 9 楼 cuijie09 的回复:
所以说是奇葩需求嘛,能实现么?

如果4楼不能实现,那么还可以尝试两条路,一条是系统api找找网络相关接口,我记得有能拿到cookie的,但不知道能不能拿到ip,另一条是自己做socket做http协议,包括握手,送包,收包,解析包,这期间可以拿到ip及端口等信息。别的暂时没想到

#1


ping下HTTP路径

#2


reqest.后面忘了,你可以百度一下。

#3


引用 1 楼 shoppo0505 的回复:
ping下HTTP路径

关键是目标文件是存在cdn上面的,比如ping两次url,会得到两个不同的ip地址,我现在是想获取到实际下载文件的ip,一直没有找到方法,HttpWebRequest中有得到连接ip的属性或方法么?

#4


HttpWebRequest怎么获取当前连接的ip
帮你试出来了。。。
不过我就不明白你要这个IP干嘛

#5


引用 4 楼 crystal_lz 的回复:
HttpWebRequest怎么获取当前连接的ip
帮你试出来了。。。
不过我就不明白你要这个IP干嘛


引用 4 楼 crystal_lz 的回复:
HttpWebRequest怎么获取当前连接的ip
帮你试出来了。。。
不过我就不明白你要这个IP干嘛

产品的奇葩需求呗,非要把下载的ip打到日志里面
我刚测试了一下,这个方法并不是每次都可以获取到ip
HttpWebRequest怎么获取当前连接的ip
我在这里加了断点,发现下载了几个文件才中断,中断的也没有规律,不知道是什么原因

#6


这不行的吧,既然是cdn缓存了,那你http协议握手的基本也是那台缓存服务器,原始文件服务器和你压根没有任何联系,怎么可能获取的到地址

#7


引用 6 楼 xdashewan 的回复:
这不行的吧,既然是cdn缓存了,那你http协议握手的基本也是那台缓存服务器,原始文件服务器和你压根没有任何联系,怎么可能获取的到地址

就是要获取缓存文件的那台服务器的地址呢

#8


引用 7 楼 cuijie09 的回复:
就是要获取缓存文件的那台服务器的地址呢

那每次变不是很正常的事嘛,既然cdn又不会只有一台

#9


引用 8 楼 xdashewan 的回复:
Quote: 引用 7 楼 cuijie09 的回复:

就是要获取缓存文件的那台服务器的地址呢

那每次变不是很正常的事嘛,既然cdn又不会只有一台

所以说是奇葩需求嘛,能实现么?

#10


引用 9 楼 cuijie09 的回复:
所以说是奇葩需求嘛,能实现么?

如果4楼不能实现,那么还可以尝试两条路,一条是系统api找找网络相关接口,我记得有能拿到cookie的,但不知道能不能拿到ip,另一条是自己做socket做http协议,包括握手,送包,收包,解析包,这期间可以拿到ip及端口等信息。别的暂时没想到