Boolean ProcessConnect(HttpHeader entity, ReceivedEventArgs e) { //WriteDebugLog("[{3}] {0} {1} [{2}]", entity.Method, entity.Url, entity.ContentLength, ID); var pxy = Host as HttpProxy; //var host = entity.Url.ToString(); var uri = RemoteServerUri; var ep = NetHelper.ParseEndPoint(entity.Url.ToString(), 80); uri.EndPoint = ep; // 不要连自己,避免死循环 if (ep.Port == pxy.Server.Port && (ep.Address == IPAddress.Loopback || ep.Address == IPAddress.IPv6Loopback)) { WriteLog("不要连自己,避免死循环"); Dispose(); return(false); } var rs = new HttpHeader { Version = entity.Version }; try { // 连接远程服务器,启动数据交换 if (RemoteServer == null) { StartRemote(e); } rs.StatusCode = 200; rs.StatusDescription = "OK"; } catch (Exception ex) { rs.StatusCode = 500; rs.StatusDescription = ex.Message; } // 告诉客户端,已经连上了服务端,或者没有连上,这里不需要向服务端发送任何数据 Send(rs.GetStream()); return(false); }