コード例 #1
0
ファイル: Program.cs プロジェクト: jansaris/SettopBox
        private void HandleStartBox(IAsyncResult res)
        {
            Logger.Info("start handling start box request");
            StartAccept(_start, HandleStartBox); //listen for new connections again

            try
            {
                var client = _start.EndAcceptTcpClient(res);
                //proceed
                Logger.Debug("Handle the start box stream");
                var clientStream = client.GetStream();
                var data         = KeyblockCall.Read(clientStream);
                Logger.Debug($"Read {data.Length} bytes from the start box stream");
                File.WriteAllBytes(Path.Combine(_appDataFolder, "KeyblockMessages", "12686.request"), data);

                Logger.Info("Connect to remote to handle start box request");
                var remote = new TcpClient();
                remote.Connect(_fallbackKeyServer, 12686);
                var remoteStream = remote.GetStream();
                remoteStream.Write(data, 0, data.Length);
                var buff = new byte[2048];
                var size = remoteStream.Read(buff, 0, buff.Length);
                File.WriteAllBytes(Path.Combine(_appDataFolder, "KeyblockMessages", "12686.response"), buff.Take(size).ToArray());

                var response = File.ReadAllBytes(Path.Combine(_appDataFolder, "KeyblockMessages", "12686.response"));
                Logger.Info($"Write {response.Length} bytes to the start box stream");
                clientStream.Write(response, 0, response.Length);
                clientStream.Flush();
                client.Close();
            }
            catch (Exception ex)
            {
                if (!_stopping)
                {
                    Logger.Warn($"Something went wrong when handling start box request: {ex.Message}");
                }
            }
        }