PDA

View Full Version : مشکل چک کردن اتصال به اینترنت با استفاده از سوکت پروگرمینگ در ویندوز 8



Naghibi
پنج شنبه 08 خرداد 1393, 09:03 صبح
با سلام خدمت همه دوستان
من یه پروژه ای دارم که باید توی اون اتصال به اینترنت رو چک کنم و هر زمان که اینترنت قطع شد، ادامه روند کار متوقف بشه و پیغام مناسب نشون داده بشه. خیلی جستجو کردم و راه حل های زیادی هم تو این سایت و بقیه سایت ها دیدم. اما اغلب روش ها اتصال شبکه رو چک می کنن نه اینترنت رو!!
مثلا استفاده از دستور
My.Computer.Network.IsAvailableیا استفاده از Winnet.dll

یکی از دوستان روش سوکت پروگرمینگ رو پیشنهاد داد که درست هم کار می کنه یعنی من به IP مورد نظرم با پورت 80 کانکت میشم هر وقت که سوکت بسته میشه میفهمم ارتباط قطع شده. حالا مشکل من اینجاست که توی ویندوز XP درست کار می کنه اما توی ویندوز 8 هیچ عکس العملی نداره. فایل توجه اینکه فایروال ویندوز و آنتی ویروس هم غیرفعال هستن.
کسی از دستان راه حلی برای این موضوع داره؟ می تونه منو راهنمایی کنه؟

محمد آشتیانی
پنج شنبه 08 خرداد 1393, 10:31 صبح
سلام
این امکانم هست که از Ping استفاده کنید ، برای مثال این Function رو ببینید



Private Function PingTest(ByVal DestinationAddress As String) As Boolean


Dim PingSender As New Ping
Dim FReturn As Boolean


Try
Dim PingReply As PingReply = PingSender.Send(DestinationAddress, 2000)
If PingReply.Status = IPStatus.Success Then
FReturn = True
Else
FReturn = False
End If
Catch ex As Exception
FReturn = False
End Try


Return FReturn
End Function

آی پی مقصد یا اسم دامنه رو بعنوان پارامتر به تابع بدید و خروجی تابع میتونه مبنای کار شما باشه برای توقف برنامه یا ادامه کار.


البته فضای نام زیر رو باید Import کنید


Imports System.Net.NetworkInformation



موفق باشید

Naghibi
پنج شنبه 08 خرداد 1393, 10:48 صبح
ممنون آقای مهندس از راهنمایی تون
من این راه حل رو قبلا هم دیده بودم اما به دلیل سرباری که روی برنامه ایجاد می کنه سراغش نرفتم. با این روش من مجبورم از تایمر یا ترد استفاده کنم و هر چند وقت یه بار آدرس رو پینگ کنم. اما توی سوکت پروگرمینگ هر وقت اتصال قطع بشه خودش بلافاصله رویداد Socket_Close رو اجرا می کنه و برنامه متوجه میشه که ارتباط قطع شده. برای همین این روش رو ترجیح دادم.