Beispiel #1
0
            public IReactiveQubject <I, O> Create(Uri streamUri, A argument, object state)
            {
                if (typeof(I) == typeof(O))
                {
                    var uri             = (Tuple <Uri, Uri>)(object) argument;
                    var refCountSubject = (IMultiSubject <bool, bool>)_parent._artifacts[uri.Item1];
                    var refCount        = refCountSubject.CreateObserver();
                    var res             = new SimpleTunnel <I>(_parent, streamUri, refCount);
                    _parent.AddArtifact(streamUri, res);
                    return((IReactiveQubject <I, O>)res);
                }

                throw new NotImplementedException();
            }
Beispiel #2
0
        public void Accepted(object sender, SocketAsyncEventArgs e)
        {
            Next.Set();

            SimpleTunnel tunnel = new SimpleTunnel(e.AcceptSocket);

            _tunnelManager.Manage(tunnel);

            Socket mySocket = e.AcceptSocket;

            //将请求转化成字节数组!
            // 为读取数据而准备缓存
            Byte[] bReceive = new Byte[1024];
            int    i        = mySocket.Receive(bReceive, bReceive.Length, 0);

            //转换成字符串类型
            string sBuffer = Encoding.ASCII.GetString(bReceive);

            Console.WriteLine(sBuffer);

            // 查找 "HTTP" 的位置
            int    iStartPos    = sBuffer.IndexOf("HTTP", 1);
            string sHttpVersion = sBuffer.Substring(iStartPos, 8);
            String sMimeType    = "text/html";

            {
                var text    = "Server Say : OK !";
                var cBuffer = Encoding.ASCII.GetBytes(text);
                sBuffer = "";

                sBuffer = sBuffer + sHttpVersion + " 200 OK" + "\r\n";
                sBuffer = sBuffer + "Server: dev.com\r\n";
                sBuffer = sBuffer + "Content-Type: " + sMimeType + "\r\n";
                sBuffer = sBuffer + "Accept-Ranges: bytes\r\n";
                sBuffer = sBuffer + "Content-Length: " + cBuffer.Length + "\r\n\r\n";

                Byte[] bSendData = Encoding.ASCII.GetBytes(sBuffer);
                //发送
                e.AcceptSocket.Send(bSendData);
                e.AcceptSocket.Send(cBuffer);
            }
        }
Beispiel #3
0
 public Forwarder(SimpleTunnel tunnel)
 {
     _tunnel = tunnel;
 }
Beispiel #4
0
 public void VisitSimpleTunnel(SimpleTunnel simpleTunnel)
 {
     throw new NotImplementedException();
 }