PDA

View Full Version : تست اتصال به اینترنت



sajjad_india
یک شنبه 18 اسفند 1387, 13:16 عصر
با سلام

سوال من اینه اگه خواهشن تکراری هستش جوابه منو بدین

سواله اینجانب : میخوام وقتی سیستم به اینترنت متصل شد یه پیغام بده که به اینترنت کانکت شده . با چه ماژول و ..... میتونم استفاده کنم ؟


ممنون . از همگی ممنون

javid_debugger
یک شنبه 18 اسفند 1387, 13:26 عصر
با اینکه سوالت تکراریه ولی:

اینو بزار تو جنرال



Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long



اینم بزار تو یه تایمر(هر وقت به اینترنت وصل بشه اطلاع میده)


IsOffLine = InternetGetConnectedState(INTERNET_CONNECTION_MODE M_BUSY, 0&)
If IsOffLine = 0 Then
MsgBox "Be Internet Connect Nist"
Else
MsgBox "Be Internet Connect Ast"
End If

موفق باشی

butterfly8528
یک شنبه 18 اسفند 1387, 14:40 عصر
سلام دوست عزیز این مطمئن ترین روشه


Const NETWORK_ALIVE_AOL = &H4
Const NETWORK_ALIVE_LAN = &H1
Const NETWORK_ALIVE_WAN = &H2
Private Declare Function IsNetworkAlive Lib "SENSAPI.DLL" (ByRef lpdwFlags As Long) As Long

Private Sub Form_Load()
Dim CRes As Long
If IsNetworkAlive(CResult) = 0 Then
MsgBox " Not Connected to a Network!"
Else
MsgBox "Connected to a" & IIf(CRes = NETWORK_ALIVE_AOL, "AOL", IIf(CRes = NETWORK_ALIVE_LAN, "LAN", "WAN")) & "Network"
End If
End Sub


موفق باشید

r0ot$harp
یک شنبه 18 اسفند 1387, 15:51 عصر
دوست عزیز اگر می خواهید مطمئن شوید که به اینترنت وصل هستین یا نه از کد پست شماره 2 استفاده کنید .

من خودم همیشه از این استفاده می کنم .

البته راه دیگه ای هست از طریق کنترل Winsock . به اینصورت که شما مثلا به سایت Google.Com متصل می شوین و وقتی Event مربوط به اتصال جرا شد اون وقت مطمئن باشین که اتصال انجام شده است.


باتشکر احسان

Faravahar
دوشنبه 04 آبان 1388, 17:57 عصر
مشکل هر دو شون اینجانست وقتی کابل شبکه رو در می یارید میگه وصل نیست . در حالی که اگه آپی رو تغییر بدین همیشه وصله ولی آیا صفحه باز می شه یا می شه جایی رو (مثل یاهو) پینگ زد . نه نمیشه ولی کد شما بازم نشون میده کنکته. بررسی کنید!

من یه راه حل دارم
یه جایی رو پینگ بزنید اگه پاسخی دریافت شد یعنی کانکته وگر نه در هر شرایطی کانکت نیست.
یه برنامه ضمیمش می کنم. یه فایل dll هم داره که باید add کنید.

اینکه هنوز سوالات زیادی دارم دلیل زنده بودنم است!

parselearn
دوشنبه 04 آبان 1388, 19:16 عصر
يك مساله
آيا وضعيت اينترنت adsl رو هم ميشه بررسي كرد؟

IamOverlord
دوشنبه 04 آبان 1388, 21:41 عصر
سلام دوستان!
به نظر من بهترین راه استفاده از ping هست. مرورگرهایی مثل opera یا firefox هم برای چک کردن اتصال به اینترنت از همین روش ارسال و دریافت packet های کوچک استفاده می کنند.

xxxxx_xxxxx
دوشنبه 04 آبان 1388, 22:14 عصر
يك مساله
آيا وضعيت اينترنت adsl رو هم ميشه بررسي كرد؟

در پست دوم، چون اغلب دو تا Connection وجود داره، نه نمیشه. اگر تنها Local وصل باشد باز هم پیغام اتصال به اینترنت داده میشه.

در پست سوم یک مشکل کوچولو وجود داره. شما هر نوع کانکشنی که داشته باشید همیشه با پیغام Connected to aWAN مواجه میشید. مگر اینکه هیچ کدام از کانکشن ها وصل نباشند.
مشکل در اسم متغیر هست. یه متغیر با نام CResult را به تابع داده ایم درحالی که بعد آمده مقدار CRes را چک کرده که خب همیشه 0 هست.:چشمک: اگر CResult رو به CRes تغییر نام بدید مشکل حل میشه. اونوقت در مورد وضعیت adsl هم جواب میده. یعنی اگر تنها Local متصل باشه پیغام LAN میده و اگر به اینترنت متصل باشید پیغام WAN میده.

روش پینگ کردن هم روش خوبی هست اما برای کارهای on time مناسب نیست.

یه روش دیگه استفاده از تابع isDestinationReachable هست که تقریباً مشابه پینگ کردن عمل می کنه. یک url بهش میدید و چند خروجی داره که از رو خروجی ها میشه فهمید که به اینترنت وصل هستیم یا نه. پس این هم از لحاظ زمانی سریع نیست.

موفق باشید/

Faravahar
سه شنبه 05 آبان 1388, 15:41 عصر
در پست دوم، چون اغلب دو تا Connection وجود داره، نه نمیشه. اگر تنها Local وصل باشد باز هم پیغام اتصال به اینترنت داده میشه.

در پست سوم یک مشکل کوچولو وجود داره. شما هر نوع کانکشنی که داشته باشید همیشه با پیغام Connected to aWAN مواجه میشید. مگر اینکه هیچ کدام از کانکشن ها وصل نباشند.
مشکل در اسم متغیر هست. یه متغیر با نام CResult را به تابع داده ایم درحالی که بعد آمده مقدار CRes را چک کرده که خب همیشه 0 هست.:چشمک: اگر CResult رو به CRes تغییر نام بدید مشکل حل میشه. اونوقت در مورد وضعیت adsl هم جواب میده. یعنی اگر تنها Local متصل باشه پیغام LAN میده و اگر به اینترنت متصل باشید پیغام WAN میده.

روش پینگ کردن هم روش خوبی هست اما برای کارهای on time مناسب نیست.

یه روش دیگه استفاده از تابع isDestinationReachable هست که تقریباً مشابه پینگ کردن عمل می کنه. یک url بهش میدید و چند خروجی داره که از رو خروجی ها میشه فهمید که به اینترنت وصل هستیم یا نه. پس این هم از لحاظ زمانی سریع نیست.

موفق باشید/



ممنون xxxxxx-xxxxxx عزیز به نکته خوبی اشاره کردی ولی

من این راه رو قبلا انجام دادم (Cresult به Cres) - جواب نمیده.

امتحان کنید!

به نظر من:
سیستم اتصال به اینترنت خارجی هایی که از این سیستم استفاده می کنن با ما فرق داره
اونا یه چیز می دونن اینکه کابل شبکه رو بزنن تو کارت >>> اینترنت داشته باشن! نه vpn نه محدودیت IP-valid اونا با IP ولید کانکت می شن پس این براشون جواب می ده.
راه حل ping عالیه . حداقل برا ما ایرانیا.

برنامشو تو پست قبلیم گذاشتم...
اگه راه جدیدی به ذهنتون می رسه من که خیلی مشتاقم.

SUCCESS

<برنامه نویس>
شنبه 09 آبان 1388, 21:33 عصر
مرسي بسيار جالب بود

يادم رفت بگم فابل dll كجاست

crazyfull
شنبه 09 آبان 1388, 22:46 عصر
در پست سوم یک مشکل کوچولو وجود داره. شما هر نوع کانکشنی که داشته باشید همیشه با پیغام Connected to aWAN مواجه میشید
به خاطر اينکه اشتباه از تابع استفاده ميشه

از اين ماژول استفاده کنيد


Option Explicit
Public Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long
'Internet connection VIA Proxy server.
Public Const ProxyConnection As Long = &H4
'Modem is busy.
Public Const ModemConnectionIsBusy As Long = &H8
'Internet connection is currently Offline
Public Const InternetIsOffline As Long = &H20
'Internet connection is currently configured
Public Const InternetConnectionIsConfigured As Long = &H40
'Internet connection VIA Modem.
Public Const ModemConnection As Long = &H1
'Remote Access Server is installed.
Public Const RasInstalled As Long = &H10
'Internet connection VIA LAN.
Public Const LanConnection As Long = &H2

Public Function IsLanConnection() As Boolean
Dim dwflags As Long
'return True if LAN connection
Call InternetGetConnectedState(dwflags, 0&)
IsLanConnection = dwflags And LanConnection
End Function


Public Function IsModemConnection() As Boolean
Dim dwflags As Long
'return True if modem connection.
Call InternetGetConnectedState(dwflags, 0&)
IsModemConnection = dwflags And ModemConnection
End Function


Public Function IsProxyConnection() As Boolean
Dim dwflags As Long
'return True if connected through a proxy.
Call InternetGetConnectedState(dwflags, 0&)
IsProxyConnection = dwflags And ProxyConnection
End Function

Public Function IsConnected() As Boolean
'Returns true if there is any internet connection.
IsConnected = InternetGetConnectedState(0&, 0&)

End Function

Public Function IsRasInstalled() As Boolean
Dim dwflags As Long
'return True if RAS installed.
Call InternetGetConnectedState(dwflags, 0&)
IsRasInstalled = dwflags And RasInstalled
End Function


Public Function ConnectionTypeMsg() As String
Dim dwflags As Long
Dim Msg As String
'Return Internet connection msg.

If InternetGetConnectedState(dwflags, 0&) Then

If dwflags And InternetConnectionIsConfigured Then
Msg = Msg & "Internet connection is configured." & vbCrLf
End If

If dwflags And LanConnection Then
Msg = Msg & "Internet connection via a LAN"
End If

If dwflags And ProxyConnection Then
Msg = Msg & ", and connection is through a proxy server."
Else
Msg = Msg & "."
End If

If dwflags And ModemConnection Then
Msg = Msg & "Internet connection via a Modem"
End If

If dwflags And InternetIsOffline Then
Msg = Msg & "Internet connection is currently offline."
End If

If dwflags And ModemConnectionIsBusy Then
Msg = Msg & "Modem is busy with a non-Internet connection."
End If

If dwflags And RasInstalled Then
Msg = Msg & "Remote Access Services are installed on local system."
End If

Else
Msg = "You are currently not connected to the internet."

End If

ConnectionTypeMsg = Msg

End Function

xxxxx_xxxxx
یک شنبه 10 آبان 1388, 04:33 صبح
روش بعدی استفاده از تابع IsDestinationReachable :


Private Type QOCINFO
dwSize As Long
dwFlags As Long
dwInSpeed As Long
dwOutSpeed As Long
End Type

Private Declare Function IsDestinationReachable Lib "sensapi.dll" _
Alias "IsDestinationReachableA" _
(ByVal lpszDestination As String, lpQOCInfo As QOCINFO) As Long

Private Function IsConn() As String
Dim qoc As QOCINFO
ret = IsDestinationReachable("http://www.google.com", qoc)
With qoc
Select Case .dwFlags
Case 1: IsConn = "LAN"
Case 2: IsConn = "RAS"
Case Else: IsConn = "No Conn"
End Select
End With
End Function

Private Sub Command1_Click()
MsgBox IsConn
End Sub

همونطور که قبلاً گفتم این تابع عمل ping رو انجام میده و نتایجی رو بر میگردونه که یکی از اون نتایج اطلاع از نوع Connection هست.

QOC = Quality of Connection
RAS = Remote Access Server

Veteran
پنج شنبه 03 شهریور 1390, 08:50 صبح
این هایی که گذاشتین همشون اگر مودم adsl روشن باشه وصعیت اتصال رو نشون میدن شاید یک نفر مودمش روشن باشه اما به اینترنت هنوز وصل نشده باشه
در این مورد کدی دارید ؟

محسن واژدی
پنج شنبه 03 شهریور 1390, 13:49 عصر
این هایی که گذاشتین همشون اگر مودم adsl روشن باشه وصعیت اتصال رو نشون میدن شاید یک نفر مودمش روشن باشه اما به اینترنت هنوز وصل نشده باشه
در این مورد کدی دارید ؟

سلام علیکم
کد زیر را بررسی کنید:

Option Explicit
Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long
Public Function IsInternetConnected() As Boolean
IsInternetConnected = CBool(InternetGetConnectedState(0&, ByVal 0&))
End Function

Private Sub Form_Load()
MsgBox IsInternetConnected
End Sub


موفق باشید

Veteran
پنج شنبه 03 شهریور 1390, 15:14 عصر
اینم نمیشه تست کردم همش true هست
ولی مودم adsl رو خاموش کردم false نشون داد

محسن واژدی
پنج شنبه 03 شهریور 1390, 15:39 عصر
اینم نمیشه تست کردم همش true هست
ولی مودم adsl رو خاموش کردم false نشون داد
بنده به مودم ADSL دسترسی ندارم اما این تابع را با پارامتر نیز تست کنین:

Private Const INTERNET_CONNECTION_PROXY As Long = &H4
Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long
Private Sub Command1_Click()
MsgBox CBool(InternetGetConnectedState(INTERNET_CONNECTIO N_PROXY, ByVal 0&))
End Sub


موفق باشید

Veteran
پنج شنبه 03 شهریور 1390, 15:44 عصر
ارروررررررررررررررررررر

محسن واژدی
پنج شنبه 03 شهریور 1390, 16:07 عصر
ارروررررررررررررررررررر

شاید بخاطر فاصله های اضافی باشد که در پارامتر "INTERNET_CONNECTIO N_PROXY" پست 17 اضافه شده است

محسن واژدی
پنج شنبه 03 شهریور 1390, 22:38 عصر
تست کردین؟

Veteran
پنج شنبه 03 شهریور 1390, 23:25 عصر
حاجی قبل اینکه اون اروری که ضمیمه کردم بده به همون فاصله ای که گفتین ایراد میگگرفت اما اونو خودم درستش کردم بعد این اروری که گذاشتمو داد

محسن واژدی
پنج شنبه 03 شهریور 1390, 23:36 عصر
حاجی قبل اینکه اون اروری که ضمیمه کردم بده به همون فاصله ای که گفتین ایراد میگگرفت اما اونو خودم درستش کردم بعد این اروری که گذاشتمو داد

عجیبه، چون خودم چندبار همین کد را تست کرده ام بدون هیچ گونه مشکلی اجرا شده است و البته بر روی ویندوز xp
شاید با ویندوز سون مشکل دارد

موفق باشید