اتصالات HTTP : همانطور که می دانید ، پروتکل HTTP استاندارد وب می باشد . صفحات وب با زبان Html نوشته می شوند و انتقال آنها از server به client توسط پروتکل HTTP صورت می گیرد .
متد OpenURL : ساده ترین راه استفاده از کنترل IT متد OpenURL است . شکل کلی این متد بصورت زیر است :
Inet.OpenURL(url,DataType)x
که url آدرس صفحه وب و DataType نوع داده بازیابی شونده است و دو مقدار icString ( داده متنی ) یا icByteArray ( داده باینری ) را می گیرد . مقدار بازگشتی این متد ، داده های منتقل شده است .
این متد بصورت سنکرون کار می کند یعنی در تمام مدت کار آن برنامه نمی تواند کار دیگری انجام دهد . اگر از icByteArray استفاده کنید باید مقدار بازگشتی آنرا در یک ارایه بایت قرار دهید .
مثال ۱ : از بخش Component در منوی Project مورد Microsoft Internet Transfer Control 6.0 را به toolbar خود اضافه کنید . سپس یک کنترل IT روی فرم قرار دهید و همچنین یک Rich Textbox و یک دکمه روی فرم قرار دهید و کد زیر را برای event مربوط به کلیک دکمه بنویسید :
TextBox.text=Inet.OpenURL(“www.microsoft.com”,icString)x
مثال ۲ : کد زیر داده های باینری را از اینترنت خوانده و آنها را در یک فایل ذخیره می کند :
Dim b() as byte
B()=Inet.OpenURL(ftp://ftp.microsoft.com/test.zip,icByteArray)x
Open App.path & “\test.zip” For Access Write As #1
Put #1,b()x
Close #1
رویداد StateChanged : کنترل IT فقط یک event دارد که StateChanged می باشد . این event زمانی روی می دهد که State کنترل تغییر کند . State هر اتفاقی است که برنامه باید از آن مطلع شود . تعریف کلی این event بصورت زیر است :
Inet_StateChanged(ByVal NewState As Integer)x
که NewState مقداری است که حالت جدید را بیان می کند . مقادیر ممکن این پارامتر عبارتند از :
icNone : حالت تغییر نکرده است .
icResolvingHost : در حال جستجوی آدرس IP کامپیوتر موردنظر .
icHostResolved : آدرس IP کامپیوتر موردنظر یافت شد .
icConnecting : در حال اتصال به کامپیوتر مقصد
icConnected : اتصال به کامپیوتر مقصد برقرار شد .
icRequesting : در حال ارسال درخواست به کامپیوتر مقصد
icRequestSent : درخواست به کامپیوتر مقصد ارسال شد .
icReceivingResponse : در حال دریافت پاسخ از کامپوتر مقصد .
icResponseReceived : پاسخ کامپیوتر مقصد دریافت شد .
icDisconnecting : در حال قطع اتصال با کامپیوتر مقصد .
icDisconnected : اتصال مقصد با موفقیت قطع شد .
icError : در ارتباط با کامپیوتر مقصد خطایی رخ داده است .
icResponseCompleted : تکمیل پاسخ – تمام داده ها دریافت شد .
تشخیص خطا در عملیات انتقال داده اهمیت بالایی دارد و StateChanged در صورت بروز هر خطایی مقدار icError را برمی گرداند و اطلاعات خطا را در دو خاصیت ResponseCode و ResponseInfo برمی گرداند .
انتقال داده بصورت آسنکرون : کنترل IT متدهای انعطاف پذیر دیگری هم دارد که آسنکرون هستند و اجازه می دهند تا همزمان با عملیات انتقال داده ، برنامه به وظایف دیگری هم بپردازد . این متدها با استفاده از Event Driven Model کار می کنند . بدین معنی که وقتی برنامه درخواست انتقال داده ای را می دهد کنترل IT درخواست را در زمینه برنامه انجام می دهد و برنامه ازاد است تا به کارهای دیگرش بپردازد . زمانیکه داده ها بازیابی شود ، داده ها را از بافر داخلی کنترل IT می خواند .
متد GetChunk : در عملیات انتقال آسنکرون ، بایستی داده را توسط این متد از بافر داخلی کنترل IT بگیریم :
Inet.GetChunk(datasize[,datatype])x
که پارامتر datasize از نوع long بوده و تعیین می کند چند بایت از بافر خوانده شود و پارامتر اختیاری datatype نوع داده را مشخص می کند و می تواند مقادیر icString و icByteArray را بگیرد .
زمانیکه StateChanged وارد حالتهای icResponseReceived و یا icResponseCompleted شد باید از GetChunk استفاده کنید . بدین صورت که از یک حلقه استفاده می کنیم تا کل بافر را بخوانیم :
Private Sub Inet_StateChanged(Byval State as Integer)x
Dim temp1,temp2
Select Case State
Case icResponseCompleted
temp1=””x
temp2=””x
Do
temp1=Inet.GetChunk(512,icString)x
temp2=temp2 & temp1
Loop Until temp1=””x
End Select
End Sub
برای بالابردن کارایی ، بهتر است از قطعات کوچک ( بین ۵۱۲ تا ۱۰۲۴ بایتی ) استفاده کنید .
متد Execute : و اما انعطاف پذیرترین متد کنترل IT ، متد Execute است . فرمت کلی این متد بصورت زیر است :
Inet.Execute(url,Command,Data,RequestHeaders)x
که url آدرس مقصد ، Command فرمانی است که به کامپیوتر مقصد داده می شود و Data و RequestHeaders اطلاعات اضافی لازم برای اجرای فرمان داده شده است . فرمانهای Command همان فرمانهای HTTP هستند که عبارتند از :
- GET : دریافت داده ها از کامپیوتر مقصد
- HEAD : دریافت اطلاعات header از کامپیوتر مقصد
- POST : ارسال اطلاعات لازم برای تکمیل درخواست
- PUT : ارسال فایل برای کامپیوتر میزبان ( upload )
فرمان GET پرکاربردترین فرمان متد Execute است و داده های خوانده شده را در بافر داخلی بافر کنترل IT قرار می دهد تا بتوان با متد GetChunk آنها را بازیابی نمود .
مثال :
Inet.Execute http://www.microsoft.com,”GET”x
سایر خواص کنترلIT :
- AccessType : نوع دسترسی کنترل IT به اینترنت را مشخص می کند و سه مقدار می تواند بگیرد :
icUseDefault : استفاده از تنظیمات رجیستری برای دسترسی به اینترنت
icDirect : اتصال مستقیم کنترل IT به اینترنت
icNamedProxy : اتصال به اینترنت توسط پروکسی
- Document : نام صفحه پیش فرض که در متد Execute از آن استفاده می شود . اگر به متد Execute پارامتر url را ندهید از این صفحه پیش فرض استفاده می کند .
- Password : کلمه رمز عبور کامپیوتر میزبان FTP
- Procotol : نوع پروتکل مورد استفاده در متد Execute را مشخص می کند و ۵ مقدار می تواند بگیرد :
icUnknown : نامعلوم
icDefault : پروتکل پیش فرض
icFTP : پروتکل FTP
icHTTP : پروتکل HTTP
icHTTP : پروتکل حفاظت شده HTTP
- Proxy : نام میزبان پروکسی
- RequestTimeOut : مدت زمانی که کنترل IT صبر می کند تا اطلاعات را دریافت کند . اگر این خاصیت صفر باشد کنترل تا هر زمان که لازم باشد برای دریافت پاسخ صبر می کند . در حالت سنکرون ( متد OpenURL ) بعد از سپری شدن این مدت زمان ، یک خطا تولید می شود و در حالت آسنکرون ( متد Execute ) رویداد StateChanged مقدار خطا را بر می گرداند
- ResponseCode : بعد از بروز حالت icError این خاصیت کد خطا را می دهد .
- ResponseInfo : توضیحی درباره خطا
- StillExecuting : اگر True باشد یعنی کنترل مشغول انجام کار است .
- URL : آدرس مقصد در متدهای OpenURL و یا Execute
- UserName : نام کاربر برای ورود به کامپیوتر میزبان FTP
نکته ۱ : برای دریافت برنامه نمونه برای متد Execute با من تماس بگیرید .
نکته ۲ : موضوع روزهای بعد :
۱ – اتصالات FTP با استفاده از کنترل IT
2 – آشنایی با تکنیک Collision Detection در ساخت بازیهای دوبعدی
۳ – آشنایی با کنترل WinSock
نکته ۳ : شاید این سوال پیش بیاید که چرا همزمان با آموزش Internet Programming ، آموزش Game Programming را نیز شروع کرده ام ؟ علت اش اینست که تصمیم دارم پس از پایان یافتن این دو مبحث ، روش ساخت یک بازی دوبعدی چند نفره تحت شبکه را برایتان آموزش دهم .
دیدگاه خود را بیان کنید.
باید وارد سایت شده باشید برای دیدگاه دادن