发现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
关键是目标文件是存在cdn上面的,比如ping两次url,会得到两个不同的ip地址,我现在是想获取到实际下载文件的ip,一直没有找到方法,HttpWebRequest中有得到连接ip的属性或方法么?
#4
帮你试出来了。。。
不过我就不明白你要这个IP干嘛
#5
产品的奇葩需求呗,非要把下载的ip打到日志里面
我刚测试了一下,这个方法并不是每次都可以获取到ip
我在这里加了断点,发现下载了几个文件才中断,中断的也没有规律,不知道是什么原因
#6
这不行的吧,既然是cdn缓存了,那你http协议握手的基本也是那台缓存服务器,原始文件服务器和你压根没有任何联系,怎么可能获取的到地址
#7
就是要获取缓存文件的那台服务器的地址呢
#8
那每次变不是很正常的事嘛,既然cdn又不会只有一台
#9
所以说是奇葩需求嘛,能实现么?
#10
所以说是奇葩需求嘛,能实现么?
如果4楼不能实现,那么还可以尝试两条路,一条是系统api找找网络相关接口,我记得有能拿到cookie的,但不知道能不能拿到ip,另一条是自己做socket做http协议,包括握手,送包,收包,解析包,这期间可以拿到ip及端口等信息。别的暂时没想到
#1
ping下HTTP路径
#2
reqest.后面忘了,你可以百度一下。
#3
ping下HTTP路径
关键是目标文件是存在cdn上面的,比如ping两次url,会得到两个不同的ip地址,我现在是想获取到实际下载文件的ip,一直没有找到方法,HttpWebRequest中有得到连接ip的属性或方法么?
#4
帮你试出来了。。。
不过我就不明白你要这个IP干嘛
#5
帮你试出来了。。。
不过我就不明白你要这个IP干嘛
帮你试出来了。。。
不过我就不明白你要这个IP干嘛
产品的奇葩需求呗,非要把下载的ip打到日志里面
我刚测试了一下,这个方法并不是每次都可以获取到ip
我在这里加了断点,发现下载了几个文件才中断,中断的也没有规律,不知道是什么原因
#6
这不行的吧,既然是cdn缓存了,那你http协议握手的基本也是那台缓存服务器,原始文件服务器和你压根没有任何联系,怎么可能获取的到地址
#7
这不行的吧,既然是cdn缓存了,那你http协议握手的基本也是那台缓存服务器,原始文件服务器和你压根没有任何联系,怎么可能获取的到地址
就是要获取缓存文件的那台服务器的地址呢
#8
就是要获取缓存文件的那台服务器的地址呢
那每次变不是很正常的事嘛,既然cdn又不会只有一台
#9
就是要获取缓存文件的那台服务器的地址呢
那每次变不是很正常的事嘛,既然cdn又不会只有一台
所以说是奇葩需求嘛,能实现么?
#10
所以说是奇葩需求嘛,能实现么?
如果4楼不能实现,那么还可以尝试两条路,一条是系统api找找网络相关接口,我记得有能拿到cookie的,但不知道能不能拿到ip,另一条是自己做socket做http协议,包括握手,送包,收包,解析包,这期间可以拿到ip及端口等信息。别的暂时没想到