Сокеты
А дело обстоит так, создаю две программы с двумя сокетами. Ставлю на прослушивание сообщений один и тот же порт. Пишу две функции, первая - отправляет на адрес 255.255.255.255 символ с ascii кодом 255 (можно и другой) на порт 3000, вторая - слушает локальный порт 3000 и если видет символ 255 отправляет на этот же адрес и порт имя компа.
Так вот, запускаю эту прогу на 2-х машинах и жму на кнопку "обновить" (первая функция). после первого нажатия я получаю имена 2 машин, а после второго только локальное имя.
Как сделать так, чтобы можно было всегда при нажатии этой кнопки получать список?
Если что, могу выложить исходник.
Цитата:
Originally posted by binaryshadow
Проблема в следующем: немогу понять почему работает неправильно.
А дело обстоит так, создаю две программы с двумя сокетами. Ставлю на прослушивание сообщений один и тот же порт. Пишу две функции, первая - отправляет на адрес 255.255.255.255 символ с ascii кодом 255 (можно и другой) на порт 3000, вторая - слушает локальный порт 3000 и если видет символ 255 отправляет на этот же адрес и порт имя компа.
Так вот, запускаю эту прогу на 2-х машинах и жму на кнопку "обновить" (первая функция). после первого нажатия я получаю имена 2 машин, а после второго только локальное имя.
Как сделать так, чтобы можно было всегда при нажатии этой кнопки получать список?
Если что, могу выложить исходник.
Проблема в следующем: немогу понять почему работает неправильно.
А дело обстоит так, создаю две программы с двумя сокетами. Ставлю на прослушивание сообщений один и тот же порт. Пишу две функции, первая - отправляет на адрес 255.255.255.255 символ с ascii кодом 255 (можно и другой) на порт 3000, вторая - слушает локальный порт 3000 и если видет символ 255 отправляет на этот же адрес и порт имя компа.
Так вот, запускаю эту прогу на 2-х машинах и жму на кнопку "обновить" (первая функция). после первого нажатия я получаю имена 2 машин, а после второго только локальное имя.
Как сделать так, чтобы можно было всегда при нажатии этой кнопки получать список?
Если что, могу выложить исходник.
не понял в чем разница между 2 именами. Что ты называешь локальным именем? и какое имя отбражается в первый раз?
Цитата:
Originally posted by binaryshadow
Проблема в следующем: немогу понять почему работает неправильно.
А дело обстоит так, создаю две программы с двумя сокетами. Ставлю на прослушивание сообщений один и тот же порт. Пишу две функции, первая - отправляет на адрес 255.255.255.255 символ с ascii кодом 255 (можно и другой) на порт 3000, вторая - слушает локальный порт 3000 и если видет символ 255 отправляет на этот же адрес и порт имя компа.
Так вот, запускаю эту прогу на 2-х машинах и жму на кнопку "обновить" (первая функция). после первого нажатия я получаю имена 2 машин, а после второго только локальное имя.
Как сделать так, чтобы можно было всегда при нажатии этой кнопки получать список?
Если что, могу выложить исходник.
Проблема в следующем: немогу понять почему работает неправильно.
А дело обстоит так, создаю две программы с двумя сокетами. Ставлю на прослушивание сообщений один и тот же порт. Пишу две функции, первая - отправляет на адрес 255.255.255.255 символ с ascii кодом 255 (можно и другой) на порт 3000, вторая - слушает локальный порт 3000 и если видет символ 255 отправляет на этот же адрес и порт имя компа.
Так вот, запускаю эту прогу на 2-х машинах и жму на кнопку "обновить" (первая функция). после первого нажатия я получаю имена 2 машин, а после второго только локальное имя.
Как сделать так, чтобы можно было всегда при нажатии этой кнопки получать список?
Если что, могу выложить исходник.
Че-то я не понял о каком списке ты говоришь... ты же сам написал что в ответ на запрос уходит - имя компа и все, ну вот оно у тебя и приходит на первый комп... в чем трабл?
'Очищаем список с именами и посылаем в сеть символ 255, для того чтобы другие компы прислали свои имена.
Private Sub Command2_Click()
List2.Clear
SockA.SendData Chr(255)
End Sub
Private Sub Form_Load()
SockA.LocalPort = 3000
SockA.RemotePort = 3000
SockA.RemoteHost = "255.255.255.255"
SockA.Bind SockA.LocalPort, SockA.LocalIP
End Sub
Private Sub SockA_DataArrival(ByVal bytesTotal As Long)
Dim strData As String
SockA.GetData strData
If strData = Chr(255) Then
SockA.SendData Text1.Text 'Локальный IP
Else
List2.AddItem strData
End If
End Sub
Ну, хорошо и в чем же трабл? по ходу код ясен, может только добавить контроль переменной strData, не пихать ее сразу в ListBox, я уж просто не помню, надо уточнить, но winsock может добавить пару спец символов в strData, так что ее нужно проверить на нормальность