Имя: Пароль:
1C
 
Как в 1С по символьному имени ресурса получить его IP-адрес?
0 Гений 1С
 
гуру
10.09.14
17:50
Речь именно о ресурсе типа my.device.loc
Т.е. это символьный адрес устройства в сети, а не компьютера, IP-адрес назначается ему динамически
1 Гений 1С
 
гуру
10.09.14
17:52
можно для примера получить из localhost 127.0.0.1
2 H A D G E H O G s
 
10.09.14
18:00
Воспользоваться функцией
gethostbyname()
библиотеки wsock32.dll
3 H A D G E H O G s
 
10.09.14
18:00
Но там есть хитрости :-)
4 Зойч
 
10.09.14
18:00
ping?
5 ДенисЧ
 
10.09.14
18:01
имяФайла = ПолучитьИмяВременногоФайла("txt");
КомандаСистемы("ping " + мойХост + " > " + имяФайла);


потом прочитать файл и найти там адрес
6 _fvadim
 
10.09.14
23:04
nslookup <host>
7 oleg_km
 
11.09.14
10:28
А DHCP умеет сам прописывать в DNS не DDNS-клиентов? Вернее если это Windows, там такая настройка включена?
8 Йохохо
 
11.09.14
10:36
(7) а он вообще это умеет? вин2к3 в оснастке дхцп кажет только своих
9 oleg_km
 
11.09.14
10:39
(8) В свойствах области вкладка Служба DNS
10 Fedor-1971
 
11.09.14
10:43
(7) в DNS регистрируется сам комп после получения дин.адреса, если в настройках IP установлена соответствующая галка.
(8) это для указания DNS в розданных адресах.
11 Fedor-1971
 
11.09.14
10:43
Сорри (8)->(9)
12 oleg_km
 
11.09.14
11:00
(10)>>  это для указания DNS в розданных адресах.

не понял, в букваре ясно написано, что это для не-Windows клиентов, которые не умеют сами прописываться в DNS. Их в таком случае в DNS пропишет сам DHCP. Как я понимаю, опция для железок
13 vde69
 
11.09.14
11:21
эммм а если у сервера две сетевухи с разными IP ????
14 vde69
 
11.09.14
11:24
или например виртуальный впн, тогда у имени будет несколько IP при чем не факт, что они будут в одной подсети...
15 Fedor-1971
 
11.09.14
11:25
(12) эта вкладка для описания взаимодействия виндового DNS и DHCP. Понимаешь правильно. Только в букваре описана теория как должно быть, а на практике в этой вкладке установлена галка "по запросу клиента" иначе замусоришь DNS смартфонами, планшетами и проч.
16 vde69
 
11.09.14
11:25
(14)+ и в данном случае ВАЖНО какой IP используется (в отличие от нескольких сетевух, где это не так важно)
17 Йохохо
 
11.09.14
11:27
(12) опция 81? нету такой в 2003, букварь пишет в 2008 есть
18 oleg_km
 
11.09.14
11:30
(15) Вот я и говорю, что по-умолчанию устройства не прописываются в DNS, т.к. сами они не умеют, а на DHCP сервере эта возможность обычно не включена
19 Йохохо
 
11.09.14
11:32
все, проснулся)
20 Гений 1С
 
гуру
15.09.14
12:45
Получилось, разобрался сам.
Вот код на VBA, сам написал, кому надо, берите:

Function WMIPing(ByVal strAdr As String, ByVal Timeout As Long, ByRef ResIP As String) As Boolean

    'MsgBox "Ping: " & strAdr & " IPPORT: "
    'IPPort temporary not used
    
    'MsgBox "Ping: " & strAdr & " TimeOut " & Timeout
    
    'strAdr - IP Adress
    'TimeOut - Timeout in miliseconds
    Dim objPing As Object
    Dim objStatus As Object
    Dim CurrTimeout
    ResIP = ""
    
    If Timeout = 0 Then
        CurrTimeout = 1000
    Else
        CurrTimeout = Timeout
    End If
    Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}"). _
    ExecQuery("select * from Win32_PingStatus where address = '" & strAdr & "' and timeout = " & CurrTimeout & "")
    For Each objStatus In objPing
        If IsNull(objStatus.StatusCode) Or objStatus.StatusCode <> 0 Then
            WMIPing = False
        Else
            WMIPing = True
            On Error Resume Next
            ResIP = objStatus.Properties_("ProtocolAddress").Value
            On Error GoTo 0
        End If
    Next

End Function
21 oleg_km
 
15.09.14
13:46
(20) Если уж обращаться к WMI, то можно напрямую обратиться к DNS серверу, а почесать левой ногой правое ухо...
22 Гений 1С
 
гуру
15.09.14
13:58
(21) у меня прописана функция пинга, я туда и вставил.
прежде чем подключиться к биометрическому девайсу по SDK я проверяю пингом, т.к. если у SDK нет понятия тайм-аут, он минуту будет тупить, пытаться подключаться.

Поэтому в этот участок я вычисление IP-адреса по имени и вставил, иногда адрес биодатчика в сети - символьный, а не IP.
25 oleg_km
 
15.09.14
14:01
(22) А интересно, зачем тогда вообще получать IP адрес, если ДНС его нормально разрешает? Почему не побращаться к устройству по имени?
26 Гений 1С
 
гуру
15.09.14
14:14
(25) DNS может и разрешает, а SDK нет. Она только с хард-IP адресом пашет. Глупое SDK.
27 oleg_km
 
15.09.14
14:21
(26) ясно, тогда пинг удачнее всего: и имя разрешит и устройство пропингует
28 Kalambur
 
15.09.14
15:02
(20) жесть
это 2 строчки на питоне ))
29 МишельЛагранж
 
15.09.14
15:31
ерунды не говори.
Это как "ну ваш VBA, на нем программы в 10 раз тяжелее, чем на Си!" И ничего, что винда на си написана, и все бибилиотеки - уже встроены?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс