Создание «пинга» внутри моего приложения на C #

Вот расширенный подход к этому. Я добавил проверку isCLI(), если вы запустили свой скрипт как в CLI, так и на веб-сервере. В противном случае сервер мог бы использовать мою функцию. Это решение будет запрашивать у пользователя, проверять ввод и повторно запрашивать пользователя для фиксированного ввода, если это необходимо. I rtrim(), потому что, если пользователь использует возврат, чтобы отправить свою запись, которая может быть добавлена ​​к записи. Проверка не нужна, просто не передавайте функцию в этом случае.

function isCLI() {
    return (php_sapi_name() === 'cli' OR defined('STDIN'));
}

function userPrompt($message, $validator=null) {
    if (!isCLI()) return null;

    print($message);
    $handle = fopen ('php://stdin','r');
    $line = rtrim(fgets($handle), "\r\n");

    if (is_callable($validator) && !call_user_func($validator, $line)) {
        print("Invalid Entry.\r\n");
        return userPrompt($message, $validator);
    } else {
        print("Continuing...\r\n");
        return $line;
    }
}

// Example =====================

function validateSetLangCode($str) {
    return preg_match("/^[A-Z0-9]{3}-[A-Z]{2}$/", $str);
}

$code = userPrompt("Please enter the set / language codes. Use the format 'SET-EN', where SET is the three-letter set code and EN is the two-letter lang code. \r\n", 'validateSetLangCode') ?: 'SET-EN';
var_dump($code);
13
задан Eric Schoonover 15 August 2009 в 16:35
поделиться

2 ответа

Взгляните на класс NetworkInformation.Ping .

Пример:

Использование:

PingTimeAverage("stackoverflow.com", 4);

Реализация:

public static double PingTimeAverage(string host, int echoNum)
{
    long totalTime = 0;
    int timeout = 120;
    Ping pingSender = new Ping ();

    for (int i = 0; i < echoNum; i++)
    { 
        PingReply reply = pingSender.Send (host, timeout);
        if (reply.Status == IPStatus.Success)
        {
            totalTime += reply.RoundtripTime;
        }
    }
    return totalTime / echoNum;
}
33
ответ дан 1 December 2019 в 19:50
поделиться

Так же, как Sidenote для этого. У SourceForge уже есть проект на SourceForge, что вы хотите. Это также включало внедрение ICMP (RFC 792)

ProjectForge

0
ответ дан 1 December 2019 в 19:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: