PDA

View Full Version : چطور میتونم با کنترل Winsock یک فایل یا اچتمل یک سایت رو دانلود کنم ؟



vahab_vb
شنبه 05 اسفند 1385, 16:33 عصر
سلام
من قبلا با یک نمونه از Winsock که بصورت Class و سورس باز بود. و بصورت API به اون متصل بود کار میکردم.
ولی الان یک مشکل باهاش پیدا کردم که مشکل منو کنترل Winsock داخل Components حل خواهد کرد.
ولی من بلد نیستم که چطوری باهاش کار زیر رو بکنم :

- یک آدرس URL مثلا بدم و خروجی Html اون رو برام در مکانی که دادم ذخیره کنه در سیستمم.
- یک آدرس URL مثلا مربوط به یک فایل عکس یا هر چیز دیگه رو که روی یک سایت هستش رو بدم و اون رو برام اونجایی که در کامپیوترم میگم ذخیره کنه.

میدونم که کنترلهای دیگه ای هم که اینکار رو میکنن وجود دارن، ولی من چون کارم متفاوت هستش. حتما نیاز دارم که با Winsock باشه.

ممنون

SeniorDevs
شنبه 05 اسفند 1385, 18:42 عصر
سلام،

شما اگر می خواهید از Winsock برای دانلود یا آپلود استفاده کنید باید حتما با پروتکل های HTTP و FTP آشنایی کاملی داشته باشید اما یک راه ساده تر وجود دارد و آن استفاده از کنترل Microsoft Internet Transfer Control v6.0 MSINET.OCX می باشد که در Components های VB6.0 موجود است و من یک مثال تقریبا کامل را که خودم آنرا به زبان VB6.0 نوشتم برای شما آپلود کردم. امیدوارم که مورد استفاده شما قرار گیرد.:لبخندساده:

7065

vahab_vb
یک شنبه 06 اسفند 1385, 13:50 عصر
میدونم که کنترلهای دیگه ای هم که اینکار رو میکنن وجود دارن، ولی من چون کارم متفاوت هستش. حتما نیاز دارم که با Winsock باشه.



خیلی لطف کردید، مثال خوبی بود. ولی من قبلا هم گفته بودم که کارم متفاوته. اینی که شما معرفی کردید. وابسته به اشیاء و فایلهای سیستمی Internet Explorer هستش. و اگر در حین دانلود فایل، و یا در زمان شروع آن، اینترنت قطع شود. فرد با پیغامی از طرف اینترنت اکسپلورر مواجه میشه که من توی برنامم خیلی مهمه که اینو نگه. که در winsock اصلا اینطور نیست. و اینکه اگر کسی روی سیستمش IE رو پاک کرده باشه. یا نگارشش فرق کنه، اونوقت شاید مشکلساز بشه.

SeniorDevs
یک شنبه 06 اسفند 1385, 16:04 عصر
1). این مثال از توابع IE استفاده نمی کند بلکه از توابع موجود در کتابخانه WININET.DLL بهره می برد و به هیچ عنوان ربطی با MS Internet Explorer پیدا نمی کند.

2). چه در هنگام دانلود فایل و چه در شروع کار اگر اتصال شما با اینترنت یا اینترانت قطع گردد تحت هیچ شرایطی و از طرف هیچ نسخه ای از IE یا واسط های دیگر پیغامی به شما نشان داده نخواهد شد مگر در ویندوز های سری 9x خود ویندوز به دلیل اینکه برنامه ای در خواست اتصال به اینترنت را داده است فقط و فقط پنجره اتصال به اینترنت را به کاربر نشان خواهد داد که البته امری کاملا طبیعی است.

3). تحت هیچ شرایطی نمی توان IE پیش فرض هیچ ویندوزی را پاک کرد چون توابع Explorer.exe و بسیاری دیگر از توابع حیاطی و راه انداز سیستم ویندوز بر مبنای IE می باشد و فقط در صورتی که شما نسخه جدید مانند IE7 را نصب کنید می توانید دوباره IE7 را پاک کنید نه IE پیش فرض سیستم.

4). حال اگر باز هم می خواهید از طریق Winsock به اینترنت متصل شوید باید ابتدا پروتکل HTTP را بطور کامل بیاموزید و بر تمام دستورات آن مانند GET، POST، HEADE، DELETE، PUT و غیره مسلط شوید. برای این کار کافی است در اینترنت بدنبال RFC-1945 که پروتکل HTTP را بطور کامل توضیح داده است بگردید و سپس از طریق کنترل Winsock میتوانید تمامی نیاز های خود را برطرف کنید.

اما چون شما برای انتقال فایل های Binary مانند تصاویر نیاز دارید که از استاندارد MIME استفاده کنید بنابراین به زمان زیادی برای یاد گیری آن نیاز هست و اینطور نیست که مثلا با یک مثال شما بتوانید فایل دانلود یا آپلود بکنید بنابراین بهتر است که یا از همان کنترل MSINET.OCX استفاده کنید یا از توابع API موجود در کتابخانه WININET.DLL.

vahab_vb
یک شنبه 06 اسفند 1385, 20:10 عصر
ممنون از راهنمائیتون.
البته Inet رو من قبلا کار کرده بودم. زیادی انتظار میکشه. ولی خودم یک نمونه کامل Open Source از Winsock دارم که مشکلم رو خیلی عالی حل کرده. ولی من دنبال راهی بودم که بشه بجای استفاده API ای از Winsock بصورت Component ای ازش استفاده کرد. که شما گفتید باید مقاله های زیادی رو بخونم. ممنون باشه چشم