PDA

View Full Version : سوال: گرفتن فقط اندازه آدرس اینترنتی



Hamishebahar
چهارشنبه 18 فروردین 1389, 19:15 عصر
سلام دوستان خسته نباشید من میخوام اندازه یک سایت رو بگیرم تا بتونم خط به خط اونو بخونم و تو Progressbar نشون بدم که چقدر از فایل یا سایت دریافت شده و چقدر دیگه اش مونده.

اگه کسی بهم بگه ممنون میشم:قلب:.

bpzone
چهارشنبه 18 فروردین 1389, 20:10 عصر
سلام دوستان خسته نباشید من میخوام اندازه یک سایت رو بگیرم تا بتونم خط به خط اونو بخونم و تو Progressbar نشون بدم که چقدر از فایل یا سایت دریافت شده و چقدر دیگه اش مونده.

اگه کسی بهم بگه ممنون میشم:قلب:.

با سلام
منظورت از اندازه یک سایت چی هست ؟
می خواهید سایت رو دانلود کنید ؟!

Hamishebahar
چهارشنبه 18 فروردین 1389, 20:52 عصر
سلام
یه چیز تو همین مایه ها.
ممنون میشم کسی جواب بده

alireza_s_84
چهارشنبه 18 فروردین 1389, 21:37 عصر
سلام
یه چیز تو همین مایه ها.
ممنون میشم کسی جواب بده

سلام میتونی از Response که دریافت میکنی ReceiveBufferSize یا GetBufferSize که طول رو بر حسب بایت برمیگردونه استفاده کنی.

AliRezaPro
چهارشنبه 18 فروردین 1389, 23:27 عصر
به این کد هم نگاه کنید

[DllImport("wininet.dll", SetLastError = true
private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength);
bool SetConnectionOptions()
{
int INTERNET_OPTION_PROXY = 38;
int INTERNET_OPEN_TYPE_PROXY = 3;

Struct_INTERNET_PROXY_INFO struct_IPI;

// Filling in structure
struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
struct_IPI.proxy = Marshal.StringToHGlobalAnsi("http:­ //localhost:MYPROXYPORT");
struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");­

// Allocating memory
IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.Siz­ eOf(struct_IPI));

// Converting structure to IntPtr
Marshal.StructureToPtr(struct_IPI,­ intptrStruct, true);

bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));

Marshal.FreeCoTaskMem(intptrStruct);­

return iReturn;
}

Hamishebahar
پنج شنبه 19 فروردین 1389, 15:09 عصر
سلام میتونی از Response که دریافت میکنی ReceiveBufferSize یا GetBufferSize که طول رو بر حسب بایت برمیگردونه استفاده کنی.
سلام ممنونم ولی من اصلاً توابعی که گفتی رو تو Response پیدا نکردم.اگه میشه یه نمونه کد بزاری ممنونت میشم.

alireza_s_84
پنج شنبه 19 فروردین 1389, 21:11 عصر
کسی نیست کمکم کنه؟

سلام اینم سایز صفحه بر حسب بایت:


TcpClient tcp = new TcpClient("barnamenevis.org", 80);
MessageBox.Show(tcp.ReceiveBufferSize.ToString());

FastCode
پنج شنبه 19 فروردین 1389, 21:27 عصر
سلام ممنونم ولی من اصلاً توابعی که گفتی رو تو Response پیدا نکردم.اگه میشه یه نمونه کد بزاری ممنونت میشم.

من قبلا" استفاده کردم وجواب گرفتم.(باهاش فیلم HD هم دانلود کردم:گیج:)
ولی فکر میکنم که alireza_s_84 کد رو اشتباه گفتند

System.Net.WebRequest wr = System.Net.HttpWebRequest.Create("http://www.barnamenevis.org");
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.IO.Stream rs= wr.GetResponse().GetResponseStream();
int n=-2;
while (n != -1)
{
n = rs.ReadByte();
if (n != -1)
{
ms.WriteByte((byte)n);
}
}
ms.Seek(0, SeekOrigin.Begin);
MessageBox.Show(ms.Length.ToString());

alireza_s_84
پنج شنبه 19 فروردین 1389, 21:32 عصر
من قبلا" استفاده کردم وجواب گرفتم.(باهاش فیلم HD هم دانلود کردم:گیج:)
ولی متاسفانه من هم کد ندارم ولی از بابت اسم ها فکر میکنم که alireza_s_84 درست گفتند(خودم هم چنین اسمهایی رو به خاطر دارم) ولی ابن تصویر هم بد نیست:

سلام دوست عزیز:
هنگام خوندن Response همیشه ContentLength برابر 1- خواهد بود این مقدار رو خودمون ست میکنیم تا مثل بافر کردن بر اساس اندازه ای که ما تعیین کردیم بافر کنیم و بخونیم.
همون دو خط کدی که توی پست قبلی دادم بهترین راه حله.

FastCode
پنج شنبه 19 فروردین 1389, 23:56 عصر
سلام دوست عزیز:
هنگام خوندن Response همیشه ContentLength برابر 1- خواهد بود این مقدار رو خودمون ست میکنیم تا مثل بافر کردن بر اساس اندازه ای که ما تعیین کردیم بافر کنیم و بخونیم.
همون دو خط کدی که توی پست قبلی دادم بهترین راه حله.


من توی پیغام خصوصی ازتون خواستم که پستتون رو ویرایش کنید.
ولی الان که دوباره میخونم==>
2^13=8192
تعداد خطوط سایت برنامه نویس ~=4000*2(Cr+Lf) میشود 8000 و با Text میشود ~=110KB
نتیجه میگیریم اون 8192 = BufferSize و نه ResponseSize
در ضمن توی Response های وب داده ها به صورت Sequential هستند و قابلیت seeking ندارند پس طول آنها نیز قابل دستیابی نیست.

Hamishebahar
جمعه 20 فروردین 1389, 19:00 عصر
سلام دوست من جناب Alireza_s_84 کد شما کار نمیکنه:

TcpClient tcp = new TcpClient("barnamenevis.org", 80);
MessageBox.Show(tcp.ReceiveBufferSize.ToString());

و جناب FastCode کد شما هم بعد از اینکه سایت رو دانلود میکنه سایز رو بدست میاره.
لطفاً یکی راهنماییم کنه.ممنون.

Hamishebahar
یک شنبه 22 فروردین 1389, 19:37 عصر
سلام.
کسی از د وستان نمیتونه کمکم کنه؟
خیلی نیاز دارم.