【发布时间】:2013-11-29 16:27:55
【问题描述】:
UPnP 一直是我想测试的东西之一,所以我决定用一种没有模糊的语言来测试它。 现在我的问题似乎是,我在互联网上找不到任何关于 UPnP 的信息,我发现它通过 UDP 运行并且它使用 SOAP 信封进行通信,但这就是我能找到的所有信息。 现在我的目标是我希望能够进行动态端口转发,并可能稍后从我的路由器收集一些信息。 以下是我目前一直在测试的代码:
;;This is the UDP Server
;;Start this first
; Start The UDP Services
;==============================================
UDPStartup()
; Register the cleanup function.
OnAutoItExitRegister("Cleanup")
; Bind to a SOCKET
;==============================================
Local $socket = UDPBind("239.255.255.250", 1900)
If @error <> 0 Then
MsgBox(0, "UDP Fail", @error, 1)
Exit;
EndIf;
While 1
Local $data = UDPRecv($socket, 1024)
If $data <> "" Then
MsgBox(0, "UDP DATA", $data, 1)
EndIf
Sleep(100)
WEnd
Func Cleanup()
UDPCloseSocket($socket)
UDPShutdown()
EndFunc ;==>Cleanup
为了记录,这只是尝试监听 UPnP 通信。 这只会导致我收到错误代码 10049,也称为地址不可用。 所以我问你们亲爱的堆垛机,我到底做错了什么?
【问题讨论】:
-
那是你机器的IP地址吗?或者您正在运行 udp 服务器的某台机器?
-
@MarcB 这是一个多播IP地址。
-
不熟悉autoit,但据我记忆一般的多播代码,一般都是先绑定本地IP地址,然后再添加多播地址。
-
我现在正在尝试监听其他执行 UPnP 的设备,一旦绑定,我就无法真正更改地址。如果我需要监听多播地址还是只监听计算机自己的地址,我有点困惑?