コード例 #1
0
            public XmlStream(Stream stream)
            {
                Stream              = new LoggedStream(stream);
                Stream.Logged       = true;
                Stream.ReadTimeout  = Timeout.Infinite;
                Stream.WriteTimeout = Timeout.Infinite;

                _Reader = new Lazy <XmlReader>(() =>
                                               XmlTextReader.Create(
                                                   Stream,
                                                   new XmlReaderSettings
                {
                    CloseInput = false
                }
                                                   )
                                               );

                _Writer = new Lazy <XmlWriter>(() =>
                                               XmlWriter.Create(
                                                   Stream,
                                                   new XmlWriterSettings
                {
                    ConformanceLevel   = System.Xml.ConformanceLevel.Fragment,
                    OmitXmlDeclaration = true,
                    CloseOutput        = false
                }
                                                   )
                                               );
            }
コード例 #2
0
        protected static Stream Connect(string Host, int Port, string ProxyHost = null, int ProxyPort = 0)
        {
            if (ProxyHost != null && ProxyPort != 0)
            {
                var client = new TcpClient();
                client.Connect(ProxyHost, ProxyPort);
                var stream       = client.GetStream();
                var requestbytes = Encoding.ASCII.GetBytes(String.Format("CONNECT {0}:{1} HTTP/1.1\r\nHost: {0}:{1}\r\nProxy-Connection: keep-alive\r\n\r\n", Host, Port));
                LoggedStream.LogOutput(requestbytes, 0, requestbytes.Length);
                stream.Write(requestbytes, 0, requestbytes.Length);
                var responsebytes = new byte[65536];
                var pos           = 0;
                var len           = 0;

                while ((len = stream.Read(responsebytes, pos, responsebytes.Length - pos)) != 0)
                {
                    pos += len;
                    LoggedStream.LogInput(responsebytes, 0, pos);
                    var response = Encoding.ASCII.GetString(responsebytes, 0, pos).Replace("\r", "").Split('\n').ToArray();

                    if (response.Length < 2)
                    {
                        continue;
                    }
                    if (response[response.Length - 1] != "")
                    {
                        continue;
                    }

                    var responsestatus = response[0].Split(new char[] { ' ' }, 3);

                    if (responsestatus.Length < 2)
                    {
                        throw new WebException("Invalid Response Status Line " + response[0], WebExceptionStatus.ProtocolError);
                    }
                    if (!responsestatus[0].StartsWith("HTTP"))
                    {
                        throw new WebException("Invalid Protocol " + responsestatus[0], WebExceptionStatus.ProtocolError);
                    }
                    if (responsestatus[1] != "200")
                    {
                        throw new WebException(responsestatus[2], WebExceptionStatus.ConnectionClosed);
                    }

                    return(stream);
                }

                throw new WebException(String.Format("Connection Closed Prematurely after reading {0} bytes", pos), WebExceptionStatus.ConnectionClosed);
            }
            else
            {
                return(new TcpClient(Host, Port).GetStream());
            }
        }
コード例 #3
0
ファイル: XMPP.cs プロジェクト: klightspeed/CloudPrintProxy
            public XmlStream(Stream stream)
            {
                Stream = new LoggedStream(stream);
                Stream.Logged = true;
                Stream.ReadTimeout = Timeout.Infinite;
                Stream.WriteTimeout = Timeout.Infinite;

                _Reader = new Lazy<XmlReader>(() =>
                    XmlTextReader.Create(
                        Stream,
                        new XmlReaderSettings
                        {
                            CloseInput = false
                        }
                    )
                );

                _Writer = new Lazy<XmlWriter>(() =>
                    XmlWriter.Create(
                        Stream,
                        new XmlWriterSettings
                        {
                            ConformanceLevel = System.Xml.ConformanceLevel.Fragment,
                            OmitXmlDeclaration = true,
                            CloseOutput = false
                        }
                    )
                );
            }