Жив ли прокси, отправка команды пинг

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
Форумчане, всем привет. Подскажите пожалуйста кубик C#, который может проверить жив ли прокси, отправив команду пинг.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
https://msdn.microsoft.com/en-us/library/system.net.networkinformation.ping.aspx

C#:
// project.Variables["proxy"].Value - положить сюда IP или Хост
try {
    Ping pingSender = new Ping ();
    PingOptions options = new PingOptions ();

    // Use the default Ttl value which is 128,
    // but change the fragmentation behavior.
    options.DontFragment = true;
    // Create a buffer of 32 bytes of data to be transmitted.
    string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
    byte[] buffer = Encoding.ASCII.GetBytes(data);
    int timeout = 30000;
    PingReply reply = pingSender.Send(project.Variables["proxy"].Value, timeout, buffer, options);
    if (reply.Status == IPStatus.Success) {
        project.SendInfoToLog(string.Format(@"Address: {0}", reply.Address.ToString()));
        project.SendInfoToLog(string.Format(@"RoundTrip time: {0}", reply.RoundtripTime));
        project.SendInfoToLog(string.Format(@"Time to live: {0}", reply.Options.Ttl));
        project.SendInfoToLog(string.Format(@"Don't fragment: {0}", reply.Options.DontFragment));
        project.SendInfoToLog(string.Format(@"Buffer size: {0}", reply.Buffer.Length));
        return "Всё прекрасно и замечательно!";
    } else {
        return null;
    }
} catch (PingException e) {
    throw new Exception(e.InnerException.Message);
}
 

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
Прописал таким образом проксю
"project.Variables["proxy"].Value = "31.202.113.86:8080";"

вот такую колбасу ошибок выдало http://prntscr.com/h7ywy0
Помогите, пожалуйста.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
Прописал атким образом проксю
"project.Variables["proxy"].Value = "31.202.113.86:8080";"

вот такую колбасу ошибок выдало http://prntscr.com/h7ywy0
Помогите, пожалуйста.
Нужно добавить в using:
C#:
using System.Net;
using System.Net.NetworkInformation;
А в GAC: System.Net.dll

Но эта штука, как я понял по порту не работает.

Можно ещё попробовать такой вариант от Radzhab, немного адаптированный:
В using:
C#:
using System.Net.Sockets;
using System.Net;
В GAC: System.Net.dll

В C# кубик:
C#:
// Формат: protocol://ip:port
string proxy = System.Text.RegularExpressions.Regex.Replace(project.Variables["proxy"].Value, @"(https?|socks[4-5]{1})://", "");

string host = proxy.Split(':')[0];
int port = int.Parse(proxy.Split(':')[1]);

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;
 

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
дерективы прописал. В кубик вставил вот так http://prntscr.com/h7zak1
В переменную "proxy" вот так вставил значение http://prntscr.com/h7zavp

И выдает такую ошибку http://prntscr.com/h7zbal

Понял, что дело в формате и оно не понимает логин и пароль. Как с логином и паролем проверить прокси?
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
дерективы прописал. В кубик вставил вот так http://prntscr.com/h7zak1
В переменную "proxy" вот так вставил значение http://prntscr.com/h7zavp

И выдает такую ошибку http://prntscr.com/h7zbal

Понял, что дело в формате и оно не понимает логин и пароль. Как с логином и паролем проверить прокси?
Логин и пароль не нужен при пинге.
 

littleKongo

Client
Регистрация
17.01.2015
Сообщения
244
Благодарностей
24
Баллы
18
Логин и пароль не нужен при пинге.
блин я кажется затупил. Пинг не показывает жив прокси ил нет. Нужно именно понять за кратчайшее время рабочий прокси или нет.
 

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
113
блин я кажется затупил. Пинг не показывает жив прокси ил нет. Нужно именно понять за кратчайшее время рабочий прокси или нет.
Самый верный способ на мой взгляд - это сделать GET запрос с использованием проси к тестовому сайту и проверить ответ на пустоту.
Так же можно отсекать медленные прокси, как нерабочие, установив маленький таймаут.
 
  • Спасибо
Реакции: cocieri, kagorec и Igorii

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)