コード例 #1
0
        internal HttpConnection(Socket socket, EndPointListener listener)
        {
            _socket   = socket;
            _listener = listener;

            Stream netStream = new NetworkStream(socket, false);

#if BUFFERED
            netStream = new BufferedNetworkStream((NetworkStream)netStream);
#endif
#if !NETCF || BCC || SSL
            if (listener.IsSecure)
            {
                var sslConf   = listener.SslConfiguration;
                var sslStream = new SslStream(netStream, false, sslConf.ClientCertificateValidationCallback);

                sslStream.AuthenticateAsServer(sslConf.ServerCertificate, sslConf.ClientCertificateRequired, sslConf.EnabledSslProtocols,
                                               sslConf.CheckCertificateRevocation);

                _secure = true;
                _stream = sslStream;
            }
            else
#endif
            _stream = netStream;

            _localEndPoint   = socket.LocalEndPoint;
            _remoteEndPoint  = socket.RemoteEndPoint;
            _sync            = new object();
            _timeout         = 90000;     // 90k ms for first request, 15k ms from then on.
            _timeoutCanceled = new Dictionary <int, bool> ();
            _timer           = new Timer(onTimeout, this, Timeout.Infinite, Timeout.Infinite);

            init();
        }
コード例 #2
0
        internal TcpListenerWebSocketContext(
            TcpClient tcpClient,
            string protocol,
            bool secure,
#if !NETCF || BCC || SSL
            ServerSslConfiguration sslConfig,
#endif
            Logger log)
        {
            _tcpClient = tcpClient;
            _secure    = secure;
            _log       = log;

            Stream netStream = tcpClient.GetStream();

#if BUFFERED
            netStream = new BufferedNetworkStream((NetworkStream)netStream);
#endif
#if !NETCF || BCC || SSL
            if (secure)
            {
                var sslStream = new SslStream(netStream, false, sslConfig.ClientCertificateValidationCallback);

                sslStream.AuthenticateAsServer(
                    sslConfig.ServerCertificate,
                    sslConfig.ClientCertificateRequired,
                    sslConfig.EnabledSslProtocols,
                    sslConfig.CheckCertificateRevocation);

                _stream = sslStream;
            }
            else
#endif
            {
                _stream = netStream;
            }

#if SSHARP
            var sock = tcpClient;
#else
            var sock = tcpClient.Client;
#endif
            _serverEndPoint = sock.LocalEndPoint;
            _userEndPoint   = sock.RemoteEndPoint;

            _request = HttpRequest.Read(_stream, 90000);

            _websocket = new WebSocket(this, protocol);
        }
        internal TcpListenerWebSocketContext(
            TcpClient tcpClient,
            string protocol,
            bool secure,
#if !NETCF || BCC || SSL
            ServerSslConfiguration sslConfig,
#endif
            Logger logger)
        {
            _tcpClient = tcpClient;
            _secure    = secure;
            _logger    = logger;

            Stream netStream = tcpClient.GetStream();

#if BUFFERED
            netStream = new BufferedNetworkStream((NetworkStream)netStream);
#endif
#if !NETCF || BCC || SSL
            if (secure)
            {
                var sslStream = new SslStream(netStream, false, sslConfig.ClientCertificateValidationCallback);

                sslStream.AuthenticateAsServer(
                    sslConfig.ServerCertificate,
                    sslConfig.ClientCertificateRequired,
                    sslConfig.EnabledSslProtocols,
                    sslConfig.CheckCertificateRevocation);

                _stream = sslStream;
            }
            else
#endif
            {
                _stream = netStream;
            }

            _request = HttpRequest.Read(_stream, 90000);
            _uri     = HttpUtility.CreateRequestUrl(_request.RequestUri, _request.Headers["Host"], _request.IsWebSocketRequest, secure);

            _websocket = new WebSocket(this, protocol);
        }