TCP接続を開き、HTTP POSTリクエストを送信して、接続を開いたままにする方法を探しています。
管理者/ルート権限なしで、コマンドラインインターフェイス(CLI)から、クロスプラットフォームで、パラメーターを渡すことで、これを実現できれば素晴らしいと思います。
いくつかの背景情報。サポートされているHTTPライブストリームを開始するために、Apple TVへの直接HTTPリクエストを再構築することができました。AirPlayが機能するのと同じ方法です。Iこれを2つの異なる方法でテストしたので、telnetとPHPソケットを使用した概念実証があります。ソースコードとを追加して、オープンソースのGitHubプロジェクトを作成したいと思います。小さなGUI(Linux、OSx、Windows用にコンパイルされた実行可能ファイル)。サポートされているストリーミングURLを入力して、AppleTVに直接送信できます。
クロスプラットフォームソリューションは、少なくともWindows、OSx、およびLinux用の実行可能ファイル/スクリプトで構成されます。ある種のターゲットとソースを受け入れる、例えば:
./persistent_tcp.sh -t 192.168.1.10:7000 -s http://example.com/stream.m3u8
./persistent_tcp.exe -t 192.168.1.10:7000 -s http://example.com/stream.m3u8
スクリプト内で、-s
引数をターゲットストリーム(HTTPリクエストの値)として使用して、正確なHTTPリクエストを指定したいと思います。理想的には、プロセスを「視覚的に」開いたままにしたり待機したりする代わりに、ある種のPIDを返し、続行します。 PIDを使用すると、新しいPIDが開始されたときに、以前のPIDを閉じることができます。これは必要ありませんが。
とにかく、新しいリクエストはAppleTVでの以前のリクエストを無効にしますが、プロセスもクリーンアップしたいと思います。クロスプラットフォームソリューションが必要な理由は、それをさまざまなクロスプラットフォームGUIに統合できるだけでなく、クロスプラットフォームCLIスクリプトを提供できるからです。
さまざまなソリューションを確認しましたが、Windowsポートを含むcurl
とwget
は、実際にはそうすることができないようです。 Windows上のTelnetは、端末/接続が開いている(そしてユーザーが十分な権限を持っている)限り完全に正常に機能し、PHPソケットは、プロセス/接続が開いている限り魅力のように機能します。I使用したくない、PHP(クロスプラットフォームですが))埋め込みます。私はそれを巨大な依存関係と見なしているためです(読む:このようなタスクには大きすぎる)。
どのプログラミング言語でこれを実現できるかは気にしません。効率的で(読み取り:フットプリントが小さい)、依存関係やリソースをあまり必要としない限り、このような小さなタスクには適合しません。あるいは、Windows用とLinux/OSx用の別々のソリューションでも問題ありません)。
bash/sh、bat/cmd/vbs、Appleスクリプト、node.js、その他の言語、またはジョブに適したコンパイル済みまたはスタンドアロン/ポータブル実行可能ファイルで問題ありませんクライアントに追加のソフトウェアをインストールする必要はありません(おそらくPHPを埋め込むことができます、PythonまたはJavaスタンドアロンとしてですが、重要なのは効率です。実際のHTTPリクエストは10行未満のコードですが、最終的に50MBのGUI実行可能ファイルができたら、誰も満足しません。)
ncat はさまざまなプラットフォームで使用でき、HTTPリクエスト本文全体を手動で作成できます(実際には必要です)。それを制御するには、shを使用できます。Windowsにはさまざまな実装があり(cygwin、GnuWin32、Win10のWindows上のUbuntuなど)、Windows用の個別のバッチまたはPowerShellスクリプトを記述できます。