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(); }
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); } }
public Forwarder(SimpleTunnel tunnel) { _tunnel = tunnel; }
public void VisitSimpleTunnel(SimpleTunnel simpleTunnel) { throw new NotImplementedException(); }