Вверх ↑
Этот топик читают: Гость
Ответов: 21
Рейтинг: 0
#1: 2016-01-12 21:12:47 ЛС | профиль | цитата
Друзья! Может кто подскажет, как получить список сетевых устройств работающих с SSDP протоколом?
карма: 0

0
Ответов: 21
Рейтинг: 0
#2: 2016-01-15 17:24:15 ЛС | профиль | цитата
Фактически нужно сделать следующее:
Устройство может быть обнаружено в сети по протоколу SSDP. Для этого нужно послать UDP пакет
на групповой адрес 239.255.255.250:1900. Содержание пакета:
M-SEARCH * HTTP/1.1
HOST: 239.255.255.250:1900
MAN: ssdp:discover
MX: 10
ST: ssdp:all
Как это сделать в hiasm?



------------ Дoбавленo в 16.48:
Сам с собой разговариваю
Посылать пакеты научился. В wireshark вижу отправленный пакет и даже ответ от устройств.
Add(MainForm,7696190,21,105)
{
Left=20
Top=105
link(onCreate,14361709:doEvent1,[])
}
Add(Button,13254290,77,91)
{
Left=10
Top=10
link(onClick,16740130:doSend,[])
}
Add(UDP,16740130,182,84)
{
LocalPort=1901
RemotePort=1900
LocalIP="0"
RemoteIP="239.255.255.250"
AutoConnect=0
ReceiveMode=1
BroadCast=0
link(onReceive,13733955:doAdd,[(233,90)(233,153)])
link(Data,14492679:Value,[(188,72)(265,72)(265,107)(342,107)])
}
Add(Hub,14361709,77,140)
{
link(onEvent1,16740130:doOpen,[(128,146)(128,90)])
}
Add(Memo,13733955,252,147)
{
Left=75
Top=45
Width=280
Height=200
}
Add(Memory,14492679,336,63)
{
Default=String(M-SEARCH * HTTP/1.1\r\nHost:239.255.255.250:1900\r\nST:upnp:rootdevice\r\nMan:"ssdp:discover"\r\nMX:3\r\n\r\n)
}

Как теперь эти ответы принять?
карма: 0

0
Ответов: 21
Рейтинг: 0
#3: 2016-01-29 13:37:40 ЛС | профиль | цитата
Так и не получаю нужного результаты. Запрос работает, а как UDP ответ от него поймать не ясно. Может есть знающие люди? Помогите пожалуйста.
карма: 0

0
Ответов: 4631
Рейтинг: 749
#4: 2016-01-29 14:38:29 ЛС | профиль | цитата
ReceiveMode=Thread, после doOpen событие onReceive должно выдавать данные.
карма: 26

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#5: 2016-01-29 15:36:48 ЛС | профиль | цитата
nesco писал(а):
ReceiveMode=Thread, после doOpen событие onReceive должно выдавать данные.

Не будет выдавать, если стоит AutoConnect=True.

tretyakov_sa писал(а):
Помогите пожалуйста


Add(MainForm,7696190,224,168)
{
Left=20
Top=105
link(onCreate,16740130:doOpen,[(319,188)(319,202)])
}
Add(Button,13254290,224,217)
{
Left=10
Top=10
link(onClick,3291399:doEvent1,[])
}
Add(UDP,16740130,329,196)
{
LocalPort=1901
RemotePort=1900
LocalIP="0"
RemoteIP="239.255.255.250"
BroadCast=0
Point(doSendTo)
link(onReceive,13733955:doAdd,[(403,202)(403,244)])
link(Data,14492679:Value,[])
}
Add(Memo,13733955,413,238)
{
Left=75
Top=45
Width=280
Height=200
ScrollBars=2
}
Add(Memory,14492679,329,133)
{
Default=String(M-SEARCH * HTTP/1.1\r\nHost:239.255.255.250:1900\r\nST:upnp:rootdevice\r\nMan:"ssdp:discover"\r\nMX:3\r\n\r\n)
}
Add(Hub,3291399,273,217)
{
link(onEvent1,13733955:doClear,[(298,223)(298,251)])
link(onEvent2,16740130:doSendTo,[])
}

карма: 22

1
Голосовали:Konst
Ответов: 21
Рейтинг: 0
#6: 2016-01-29 15:38:30 ЛС | профиль | цитата
Пробовал не получается.Если запрос отправляю на адрес устройства, то ответ приходит как надо. Но штука в том, что запрос делаю для того чтоб узнать адрес. То есть обычные запросы работают, а ответ от широковещательного запроса получить не могу.
карма: 0

0
Разработчик
Ответов: 26163
Рейтинг: 2127
#7: 2016-01-29 15:41:56 ЛС | профиль | цитата
tretyakov_sa писал(а):
ответ от широковещательного запроса получить не могу

См мой пост, ответ приходит от всех устройств. В поле LOCATION находится адрес отправки
карма: 22

0
Ответов: 21
Рейтинг: 0
#8: 2016-01-29 15:51:51 ЛС | профиль | цитата
Спасибо, nesco! Твой код не сработал, но вот так все заработало:
Add(MainForm,7696190,231,133)
{
Left=20
Top=105
link(onCreate,4345126:doOpen,[(331,153)(331,195)])
}
Add(Button,13254290,287,119)
{
Left=10
Top=10
Data=String()
link(onClick,4345126:doSendTo,[(359,125)(359,223)])
}
Add(Memo,13733955,462,175)
{
Left=75
Top=45
Width=280
Height=200
ScrollBars=2
}
Add(Memory,14492679,546,91)
{
Default=String(M-SEARCH * HTTP/1.1\r\nHost:239.255.255.250:1900\r\nST:upnp:rootdevice\r\nMan:"ssdp:discover"\r\nMX:3\r\n\r\n)
}
Add(UDP,4345126,399,189)
{
LocalPort=1901
RemotePort=1900
LocalIP="0"
RemoteIP="239.255.255.250"
BroadCast=0
Point(doSendTo)
link(onReceive,13733955:doAdd,[(447,195)(447,181)])
link(Data,14492679:Value,[(405,156)(552,156)])
}


Hiasm сила, убеждаюсь в этом все больше и больше!!!
карма: 0

0
файлы: 1code_36888.txt [719B] [250]
Разработчик
Ответов: 26163
Рейтинг: 2127
#9: 2016-01-29 15:58:44 ЛС | профиль | цитата
tretyakov_sa писал(а):
Твой код не сработал



Оригинально, у меня оба кода работают. Твой код практически ничем не отличается от моего, просто в моем стоит очистка списка, а установки UDP те же самые.
карма: 22

0
Ответов: 21
Рейтинг: 0
#10: 2016-01-29 16:23:43 ЛС | профиль | цитата
nesco писал(а):
Оригинально, у меня оба кода работают. Твой код практически ничем не отличается от моего, просто в моем стоит очистка списка, а установки UDP те же самые.

Да работает, просто я запустил свой код и не закрыл. Порт был уже занят
карма: 0

0
10
Сообщение
...
Прикрепленные файлы
(файлы не залиты)