しばらくの間、Apple TV との間でイベント接続を実行しようとしてきましたが、何が間違っているのかわかりません。
私は自分の要求を書き、適切な応答を得ます。しかし、一時停止したり、ビデオが停止したりしても、イベントは発生しません。
イベント接続に関連するコードは次のとおりです。
var endpoint = new IPEndPoint(IPAddress.Parse("192.168.13.37"), 23579);
var socket = new Socket(endpoint.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
socket.Bind(endpoint);
socket.Connect("192.168.13.13", 7000);
socket.NoDelay = true;
var request = Encoding.UTF8.GetBytes("POST /Reverse HTTP/1.1\r\nConnection: Upgrade\r\nUpgrade: PTTH/1.0\r\nX-Apple-Purpose: event\r\nUser-Agent: ItsMe/5.7\r\nX-Apple-Session-ID: f519e023-da6d-4fc2-902f-791c07dd9ff8\r\nContent-Length: 0\r\n\r\n");
socket.Send(request, request.Length, 0);
var response = new Byte[4096];
var read = socket.Receive(response, response.Length, 0);
var result = Encoding.UTF8.GetString(response, 0, read);
Apple TV からの応答:
HTTP/1.1 101 Switching Protocols
Date: Thu, 23 Feb 2012 17:33:41 GMT
Upgrade: PTTH/1.0
Connection: Upgrade
私の最初の試みは、この時点でソケットを閉じて開始しましたTcpListener
(これも試しましたHttpListener
)。3 つのアプローチはすべてまったく効果がありませんでした。完全にするために、現在のコードを含めます (これは機能しません)。私は現在 に戻っていTcpListener
ます:
socket.Disconnect(true);
socket.Close();
var listener = new TcpListener(lep);
listener.ExclusiveAddressUse = true;
listener.Start();
while (true)
{
var client = listener.AcceptTcpClient();
using (var reader = new StreamReader(client.GetStream()))
{
while (isRunning)
{
if (reader.Peek() != -1)
{
Console.WriteLine(reader.ReadLine());
}
}
}
client.Close();
}
を保持する予定はありませんwhile (true)
が、イベントを取得して、ビデオの再生がいつ停止するかを知るまで、そこに置くものは他にありません。
最初にこの部分を実行play
してから、マシン上のファイルへの URL を含むコマンドを送信すると、Apple TV で問題なく再生が開始されます。コマンドを送信scrub
して、位置/期間に関する情報を取得することもできますが、イベントはまったくありません。
どんな助け/提案も大歓迎です。