1

コード

function radiotest(host,port)
    local rstr="Online"
    local sock, err = socket.tcp()
    if not sock then
        return "Failed"
    end
    sock:settimeout(1)
    local res, err = sock:connect(host, port)
    if not res then
        return "offline"
    else
        sock:settimeout(1)
        sock:send("GET /index.html HTTP/1.0\r\n UserAgent: SHOUTcast Song Status \r\n Accept: */*\r\n\r\n")
        sock:settimeout(3)
        local data=sock:receive('*a')
        sock:close()
        print(data)
        -- Further processing content here
    end
end
print( radiotest( "10.*.*.*", 1234 ) )

上記のソケット接続は私を返します:

ICY 404 Resource Not Found
icy-notice1:<BR>SHOUTcast Distributed Network Audio Server/win32 v1.9.7<BR>
icy-notice2:The resource requested was not found<BR>

問題はヘッダーのリストにあると思いますが、追跡できません。

ページはすべてのブラウザーで正常に開きます (Opera は別のブラウザーとしてマスクする必要があります。そうしないと、すべての曲をダウンロードし続けます)。

内部で次の文字列を使用してみましたsock:send()

  • GET /index.html HTTP/1.0\r\n UserAgent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n
  • GET /index.html HTTP/1.0\r\n UserAgent: Opera/9.80 (Windows NT 6.1; Win64; x64) Presto/2.12.388 Version/12.12\r\n\r\n
  • GET /index.html HTTP/1.0\r\n UserAgent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17\r\n\r\n

私はこの部分で完全に立ち往生しています。を使用してページを取得するにはどうすればよいsocket.tcp()ですか?

4

2 に答える 2

2

パケット キャプチャを確認したところ、実際にネットワーク経由で送信されているものが間違っているようです。ユーザーエージェント文字列がうまくいきません:

> GET /index.html HTTP/1.0

< ICY 404 Resource Not Found
< icy-notice1:<BR>SHOUTcast Distributed Network Audio Server/win32 v1.9.7<BR>
< icy-notice2:The resource requested was not found<BR>

を含むユーザー エージェントを指定しないMozillaと、管理インターフェイスまたはその一部にアクセスできなくなります。戻って、送信しているコードをもう一度確認してください。

于 2013-02-17T18:18:38.197 に答える
0

@ブラッドありがとう。Wireshark に関するあなたの支援は、実際に実行可能でした。リクエストで余分なスペースを提供していたため、User-Agentヘッダーがサーバーに渡されませんでした。

sock:send("GET /index.html HTTP/1.0\r\n UserAgent: SHOUTcast Song Status \r\n Accept: */*\r\n\r\n")

\r\n UserAgent: SHOUTcast Song Status代わりに次のようにする必要があります。

\r\nUser-Agent: SHOUTcast Song Status

そして、それは今うまくいっています。

助けてくれてありがとう。:D

HTML をフィルターで除外した後の関数の結果は次のようになります。

オンライン(トニック - If You Could Only See)

オンライン (トニック - If You Could Only See) ストリームは 256 kbps でアップしており、32 人のリスナーのうち 0 人 (0 の固有)

于 2013-02-18T03:27:02.363 に答える