Ejemplo n.º 1
0
        protected async Task <SourceConnectionClient> DoConnectGiv(Uri source, CancellationToken cancel_token)
        {
            Logger.Debug("DoConnectGiv");
            AddressFamily family = AddressFamily.InterNetwork;

            if (source.HostNameType == UriHostNameType.IPv6)
            {
                family = AddressFamily.InterNetworkV6;
            }

            Socket socket;

            socket = PeerCast.ReceiveGivSocket(Guid.Parse(source.LocalPath.Substring("/channel/".Length)), family);
            if (socket != null)
            {
                var client = new TcpClient();
                client.Client = socket;

                var connection = new SourceConnectionClient(client);
                connection.Stream.ReadTimeout  = 30000;
                connection.Stream.WriteTimeout = 8000;

                remoteHost = socket.RemoteEndPoint;

                this.client = client;

                return(connection);
            }
            else
            {
                return(null);
            }
        }