Страница: 1 |
Страница: 1 |
Вопрос: Проверка Интернет соединения!!!
Добавлено: 20.11.05 23:06
Автор вопроса: Elkatib
У меня такая проблема и её надо решить :)
Вообщем, как-то давно я скачал исходник (кстати, от сюда... остался патриотом), который проверял в сети ли комп или нет.. то бишь, если я подключался (через модем) к Инету, исходник определял, что я в сети, а если нет то соответственно определял, что подключения к Инету - нет!
Вообщем, теперь у меня выделенка а исходник так и пишет, что подключения к Инету нет... я хотел спросить, а нельзя ли симулировать подключение, что б прога думала, что подключения к Инету есть?
Ну, или хотя бы скажите, как она определяет, что комп в сети или нет... а не, признаюсь - ламер и не понимаю...
Заранее благодарю!!!
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
GigaZiv
ICQ: 335510202
Вопросов: 1
Ответов: 6
Профиль | | #1
Добавлено: 21.11.05 08:22
Можно определить так, есть конкретный узел Инета. Если есть соединение до него, то Инет есть и не важно модем или сеть:
Private Const FLAG_ICC_FORCE_CONNECTION = &H1
Private Declare Function InternetCheckConnection Lib "wininet.dll" Alias "InternetCheckConnectionA" (ByVal lpszUrl As String, ByVal dwFlags As Long, ByVal dwReserved As Long) As Long
Private Sub Form_Load()
'---
If InternetCheckConnection("http://www.mail.ru/", FLAG_ICC_FORCE_CONNECTION, 0& = 0 Then
MsgBox "Не могу подключиться", vbInformation
Else
MsgBox "Подключился", vbInformation
End If
End Sub
Номер ответа: 2
Автор ответа:
KEP
Вопросов: 44
Ответов: 119
Профиль | | #2
Добавлено: 21.11.05 08:53
Private Declare Function RasEnumConnections Lib "RasApi32.dll" Alias "RasEnumConnectionsA" (lpRasCon As Any, lpcb As Long, lpcConnections As Long) As Long
Private Declare Function RasGetConnectStatus Lib "RasApi32.dll" Alias "RasGetConnectStatusA" (ByVal hRasCon As Long, lpStatus As Any) As Long
Private Const RAS95_MaxEntryName = 256
Private Const RAS95_MaxDeviceType = 16
Private Const RAS95_MaxDeviceName = 32
Private Type RASCONN95
dwSize As Long
hRasCon As Long
szEntryName(RAS95_MaxEntryName) As Byte
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Private Type RASCONNSTATUS95
dwSize As Long
RasConnState As Long
dwError As Long
szDeviceType(RAS95_MaxDeviceType) As Byte
szDeviceName(RAS95_MaxDeviceName) As Byte
End Type
Public Function IsConnected() As Boolean
Dim TRasCon(255) As RASCONN95
Dim lg As Long
Dim lpcon As Long
Dim RetVal As Long
Dim Tstatus As RASCONNSTATUS95
TRasCon(0).dwSize = 412
lg = 256 * TRasCon(0).dwSize
RetVal = RasEnumConnections(TRasCon(0), lg, lpcon)
Tstatus.dwSize = 160
RetVal = RasGetConnectStatus(TRasCon(0).hRasCon, Tstatus)
If Tstatus.RasConnState = &H2000 Then
IsConnected = True
Else
IsConnected = False
End If
End Function
Private Sub Form_Load()
Label1 = IsConnected()
End Sub
Номер ответа: 3
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #3
Добавлено: 21.11.05 10:55
А можно просто подумать головой ..
===
Ставишь label и timer
В таймер ставишь условие:
Else 'не подключен
End If
===
зы: критикам, а что, хороший выход из ситуации, чтобы не юзать Api
Номер ответа: 4
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #4
Добавлено: 21.11.05 10:59
... чуть не забыл
Незабудь чего-то вроде Winsock вставить и определить в label текущий Ip.
===
label.caption = winsock.localip
Номер ответа: 5
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #5
Добавлено: 21.11.05 11:11
>а нельзя ли симулировать подключение, что б прога думала, что подключения к Инету есть?
Убрать из исходника все проверки на подключение. Все равно лучше пинга удаленного хоста проверки нет.
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 21.11.05 11:27
===
Ставишь label и timer
В таймер ставишь условие:
If label.caption = "127.0.0.1" Then 'подключен
Else 'не подключен
End If
)))))))аааааааааааааа аралнемог!!!! ещё так убедительно, подумать головой .... ну хорошо что хоть потом добавил что хоть винсок надо использовать )
вообще самый надёжный способ - пинговать сайт. Я даже объясню... Да, полно примеров которые могут определить не только подключён ли комп в инет, а и как подключен (Dial-Up, LAN, VPN, etc...) Но у вас них есть недостаток, даже если комп подключён например к DialUp, это не означает что 100% есть инет, может юзер на тестовом аккаунте сидит Ну ладно, с диалапом ещё фигня... А вот Lan or Vpn, у меня такое часто, т.е. комп в сети, а на статистике "Интернет отключёк" и всё... а все исходники (кроме которые пингуют) кричат что я подключён через Lan (DIRECT CONNECT), или VPN....
Номер ответа: 7
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #7
Добавлено: 21.11.05 21:21
2 «Unknown Lamer»: а нифига пользоваться контролом, если можно юзать API? Головой думать надо...
Номер ответа: 8
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #8
Добавлено: 21.11.05 22:24
действительно.. гы) продуплил..
Номер ответа: 9
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #9
Добавлено: 22.11.05 20:23
2 «Unknown Lamer»: то-то!
Номер ответа: 10
Автор ответа:
Comanche
Вопросов: 87
Ответов: 459
Профиль | | #10
Добавлено: 24.11.05 20:14
Я когда-то задавался тем же вопросом - как проверить наличие Инет-коннекта... тут с год назад (или два) была довольно бурная дискуссия на эту тему... я тогда насчитал аж 11 разных способов - см. ftp://ftp.narod.ru/Downloads/CheckInternet.zip.
Долго обсуждали... потом я всё же согласился с Sharp'ом, когда тот сказал, что надёжнее попытки открыть какой-нибудь "внешний" (и желательно - нужный) URL ничего нет.
Кстати, популярный среди VB-шников ICMP-пинг (пример которого есть в API Guide; потому наверное и популярный) - ненадёжный способ: пингуемый сервак может просто не поддерживать ICMP...
Номер ответа: 11
Автор ответа:
«UL.eXe»
ICQ: 197.895.916.247
Вопросов: 72
Ответов: 540
Профиль | | #11
Добавлено: 25.11.05 11:09
а нафига контрол
можна использовать VBSocket от DaSharma!
И ненадо Ws подключать
Номер ответа: 12
Автор ответа:
Sacred Phoenix
ICQ: 304238252
Вопросов: 52
Ответов: 927
Профиль | | #12
Добавлено: 25.11.05 21:26
WS действительно подключать не надо, ведь юзается API. А контрол на чем основывается в большинстве случаев? Imho, на API!
2 DaSharm: не в обиду тебе!