|
Как в 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 раз тяжелее, чем на Си!" И ничего, что винда на си написана, и все бибилиотеки - уже встроены? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |