一段时间以来,我一直试图让事件连接与我的 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);
苹果电视的回应:
HTTP/1.1 101 Switching Protocols
Date: Thu, 23 Feb 2012 17:33:41 GMT
Upgrade: PTTH/1.0
Connection: Upgrade
我的第一次尝试此时我关闭了套接字并启动了TcpListener
(也尝试过HttpListener
)。所有三种方法都完全没有结果,为了完整起见,我将包括我当前的代码(不起作用)。我目前回到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
命令并获取有关位置/持续时间的信息,但没有任何事件。
非常感谢任何帮助/建议。