Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает пинг порта по адресу. На localhost определяет закрытые порты 
:(
    Опции темы
kuzyaka
Дата 19.8.2015, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 17.12.2006

Репутация: нет
Всего: нет



Есть функция, которая на localhost всегда выдает True, хотя сервера MySQL там нет, да и вообще она по любому порту на localhost всегда выдает True.
Причем на удаленные адреса все пингуется правильно, заморочка только с localhost .
Что тут не так работает?
Код

  Function ПроверитьСоединениеMySQL() As Boolean

    Dim addr As IPAddress = IPAddress.Parse("127.0.0.1")
    Dim ep As New IPEndPoint(addr, 3306)

    Dim soc As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
    Dim asyncResult As IAsyncResult = soc.BeginConnect(ep, New AsyncCallback(AddressOf ConnectCallback), soc)

    If asyncResult.AsyncWaitHandle.WaitOne(3000, False) Then
      soc.Close()
      strIPMySQL = "localhost"
      Return True
    Else
      soc.Close()
      addr = IPAddress.Parse("192.168.0.1")
      ep = New IPEndPoint(addr, 3306)
      soc = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
      asyncResult = soc.BeginConnect(ep, New AsyncCallback(AddressOf ConnectCallback), soc)

      If asyncResult.AsyncWaitHandle.WaitOne(3000, False) Then
        soc.Close()
        strIPMySQL = "192.168.0.1"
        Return True
      Else
        soc.Close()
        MessageBox.Show("Отсутствует соединение с сервером MySQL!!!",
                    "Проверка соединения с сервером MySQL",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error)
        Return False
      End If
    End If

  End Function

  Sub ConnectCallback(ByVal ar As IAsyncResult)

    Dim connectDone As New Threading.ManualResetEvent(False)

    Try
      Dim client As Socket = DirectCast(ar.AsyncState, Socket)
      client.EndConnect(ar)
      connectDone.Set()
    Catch ex As Exception
    End Try

  End Sub

А вот эта, не асинхронная функция, с localhost работает правильно.
Код

  Function ПроверитьСоединениеMySQL() As Boolean

    Dim addr As IPAddress = IPAddress.Parse("127.0.0.1")
    Dim ep As New IPEndPoint(addr, 3306)

    'Dim tempSocket As New Socket(ep.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
    Dim tempSocket As New Sockets.TcpClient
    Try
      tempSocket.Connect(ep)
      tempSocket.Close()
      strIPMySQL = "localhost"
      Return True
    Catch
      tempSocket.Close()
      addr = IPAddress.Parse("192.168.0.1")
      ep = New IPEndPoint(addr, 3306)
      'tempSocket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
      tempSocket = New Sockets.TcpClient
      Try
        tempSocket.Connect(ep)
        tempSocket.Close()
        strIPMySQL = "192.168.0.1"
        Return True
      Catch ex As Exception
        tempSocket.Close()
        MessageBox.Show("Отсутствует соединение с сервером MySQL!!!" & vbCrLf & ex.Message,
                    "Проверка соединения с сервером MySQL",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error)
        Return False
      End Try
    End Try

  End Function

Получается дело в асинхронном методе, он почему то с localhost не работает.
Что ему не так?

Это сообщение отредактировал(а) kuzyaka - 19.8.2015, 13:46
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
cully
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Распределённые приложения и сеть | Следующая тема »


 




[ Время генерации скрипта: 0.1260 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.