Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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
  В таймер ставишь условие:
If label.caption = "127.0.0.1" Then 'подключен
  Else 'не подключен
 End If

===
зы: критикам, а что, хороший выход из ситуации, чтобы не юзать Api ;)

Ответить

Номер ответа: 4
Автор ответа:
 «UL.eXe»



ICQ: 197.895.916.247 

Вопросов: 72
Ответов: 540
 Профиль | | #4 Добавлено: 21.11.05 10:59
... чуть не забыл :)
Незабудь чего-то вроде Winsock вставить и определить в label текущий Ip.
===
Form_Load
 label.caption = winsock.localip

Ответить

Номер ответа: 5
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #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
а нифига пользоваться контролом, если можно юзать API?


действительно.. :) гы) продуплил..

Ответить

Номер ответа: 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
а нифига пользоваться контролом, если можно юзать API?


 а нафига контрол :)
 можна использовать VBSocket от DaSharma!
 И ненадо Ws подключать ;)

Ответить

Номер ответа: 12
Автор ответа:
 Sacred Phoenix



ICQ: 304238252 

Вопросов: 52
Ответов: 927
 Профиль | | #12 Добавлено: 25.11.05 21:26
WS действительно подключать не надо, ведь юзается API. А контрол на чем основывается в большинстве случаев? Imho, на API!
2 DaSharm: не в обиду тебе! :)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам