예제 #1
0
        public PingResult Send(string sAddrOrIPe)
        {
            IPAddress addr;

            if (IPAddress.TryParse(sAddrOrIPe, out addr))
            {
                return(Send(addr));
            }
            var ipe = SocketHelper.ParseEndPoint(sAddrOrIPe);

            return(Send(ipe));
        }
예제 #2
0
 protected override void DisposeInternal(bool disposing)
 {
     if (disposing)
     {
         if (_listener != null)
         {
             SocketHelper.CloseListener(ref _listener);
         }
     }
     _listener       = null;
     Prepare         = null;
     ProgressChanged = null;
     Completed       = null;
 }
예제 #3
0
        /// <summary>
        /// Listen
        /// </summary>
        /// <param name="savePath"></param>
        /// <param name="port"></param>
        public void Listen(string savePath, ushort port)
        {
            Contract.Requires(!string.IsNullOrEmpty(savePath));
            if (_listener != null)
            {
                throw new ApplicationException("已启动监听");
            }

            App.CreateDirectory(_savePath = savePath);
            var localIpe = new IPEndPoint(IPAddress.Any, port);

            //最多支持16线程
            SocketHelper.CreateListener(out _listener, localIpe, 16);
            _listener.BeginAccept(this.AcceptCallback, null);
        }
예제 #4
0
            public void AddRemoteEndPoint(EndPoint remoteEndPoint)
            {
                var de = remoteEndPoint as DnsEndPoint;

                if (de != null)
                {
                    var q = from ip in SocketHelper.GetHostAddresses(de.Host)
                            select new IPEndPoint(ip, de.Port);
                    lock (_remoteEndPoints)
                    {
                        _remoteEndPoints.UnionWith(q);
                    }
                }
                else
                {
                    lock (_remoteEndPoints)
                    {
                        _remoteEndPoints.Add(remoteEndPoint);
                    }
                }
                App.LogInfo("Udp Record {0}.", remoteEndPoint);
            }
예제 #5
0
        private void CheckSocks(HttpContext context, out Guid agentSock, out IPEndPoint agentDirect)
        {
            string direct = context.Request.Headers[AgentDirect];

            if (!Guid.TryParseExact(context.Request.Headers[AgentSock], "N", out agentSock) || string.IsNullOrEmpty(direct))
            {
                this.ResponseForbidden(context);
            }
            try
            {
                agentDirect = SocketHelper.ParseEndPoint(direct);
                if (agentDirect.Address.Equals(IPAddress.Loopback) && BlockPorts.Contains((ushort)agentDirect.Port))
                {
                    throw new HttpException(403, string.Format("CheckSocks proxyClient({0}) invalid", agentDirect));
                }
            }
            catch (ArgumentException)
            {
                agentDirect = null;
                this.ResponseForbidden(context);
            }
        }
예제 #6
0
 private void checkBox1_CheckedChanged(object sender, EventArgs e)
 {
     if (((CheckBox)sender).Checked)
     {
         if (!_initialized)
         {
             Cursor = Cursors.WaitCursor;
             try
             {
                 var ipe = SocketHelper.ParseEndPoint(textBox1.Text);
                 this.monitorUserControl1.Initialize(ipe);
                 _initialized = true;
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message, string.Empty, MessageBoxButtons.OK, MessageBoxIcon.Warning);
                 App.LogError(ex, "MonitorClient");
             }
             Cursor = Cursors.Arrow;
         }
         if (_task == null || _task.IsCompleted)
         {
             _task = TaskHelper.Factory.StartNew(() =>
             {
                 while (_initialized)
                 {
                     this.monitorUserControl1.UpdateDisplay();
                     Thread.Sleep(200);
                 }
             });
         }
     }
     else
     {
         _initialized = false;
     }
 }