2010-05-20 8 views
10

Tengo una lista bastante grande con servidores proxy y sus puertos correspondientes. ¿Cómo puedo verificar si funcionan o no?C#: cómo probar si el proxy funciona o no?

+0

define 'working' – mafu

+0

No veo exactamente cómo esto se relaciona con C#. Además creo que este tipo de pregunta estaría mejor servida en serverfault.com – joshlrogers

+1

Pensándolo bien, supongo que está preguntando cómo comprobar si están _trabajando_ usando el código C#. – mafu

Respuesta

10

¿Trabajar? Bueno, tienes que usarlos para ver si están funcionando.

Si quiere ver si están en línea, supongo que ping es un primer paso.

Hay un Ping class en .NET.

using System.Net.NetworkInformation; 

private static bool CanPing(string address) 
{ 
    Ping ping = new Ping(); 

    try 
    { 
     PingReply reply = ping.Send(address, 2000); 
     if (reply == null) return false; 

     return (reply.Status == IPStatus.Success); 
    } 
    catch (PingException e) 
    { 
     return false; 
    } 
} 
+0

ping NO se asegura de que pueda navegar por google u otros sitios web. Intento navegar por un sitio. redirecciona a la página del enrutador o a alguna página absurda. tienes que descargar html y verificar si contiene palabras específicas para el sitio que estás revisando. es decir: google.com contiene la palabra "schema.org". si htmlsourceCode contiene, entonces puede navegar por internet con ese proxy. –

1

probar esto:

public static bool SoketConnect(string host, int port) 
{ 
    var is_success = false; 
    try 
    { 
     var connsock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
     connsock.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 200); 
     System.Threading.Thread.Sleep(500); 
     var hip = IPAddress.Parse(host); 
     var ipep = new IPEndPoint(hip, port); 
     connsock.Connect(ipep); 
     if (connsock.Connected) 
     { 
      is_success = true; 
     } 
     connsock.Close(); 
    } 
    catch (Exception) 
    { 
     is_success = false; 
    } 
    return is_success; 
} 
+2

¿por qué la demora de 500ms? – user962284

+0

Buena pregunta, pensé que quería decir el tiempo de espera al principio. – Proximo

0
string strIP = "10.0.0.0"; 
int intPort = 12345; 

    public static bool PingHost(string strIP , int intPort) 
    { 
     bool blProxy= false; 
     try 
     { 
      TcpClient client = new TcpClient(strIP ,intPort); 

      blProxy = true; 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show("Error pinging host:'" + strIP + ":" + intPort .ToString() + "'"); 
      return false; 
     } 
     return blProxy; 
    } 

    public void Proxy() 
    { 
     bool tt = PingHost(strIP ,intPort); 
     if(tt == true) 
     { 
      MessageBox.Show("tt True"); 
     } 
     else 
     { 
      MessageBox.Show("tt False"); 
     } 
Cuestiones relacionadas