1

所以我试图从打开 udp 端口​​ 1900 的服务器获得响应。

这是我输入的命令和我发送的数据:

root$ nc -uvv <ip of server> 1900
M-SEARCH * HTTP/1.1
HOST:239.255.255.250:1900
MAN:"ssdp:discover"
MX:5
ST:ssdp:all

但是我没有得到服务器的任何响应,至少没有输出到屏幕上。我确定这个 IP 上的 udp 端口​​ 1900 是打开的。如果有人可以提供任何帮助以从打开 udp 端口​​ 1900 的服务器获得响应,那将不胜感激。谢谢

4

1 回答 1

1

此处使用的 HTTPU 基于 HTTP,因此行尾必须是 CR LF,而不是像您的情况那样简单的 LF - 尽管服务器可能会忽略这一点。此外,请求标头也必须以仅包含 CR LF 的行结束——尽管服务器也可能会忽略这一点。但重要的是整个请求都包含在单个 UDP 消息中,因为 UDP 是数据报,而不是像 TCP 那样的流协议。仅当您只是在终端上输入请求时,nc 将为您输入的每一行创建一个新数据包。

如果将整个请求放入文件中(将正确的 CR LF 作为行尾,将空行作为标题的结尾),然后将其通过管道传输到 nc,它对我有用:

cat request | nc -uvv <ip-address> 1900
...
HTTP/1.1 200 OK
LOCATION: http://.../igd2desc.xml
SERVER: FRITZ!Box ...
于 2018-10-13T19:42:03.710 回答