Рекомендуемый сервер IRC (ircd) для небольшого сайта? [закрытый]

Во-первых, вы должны получить сообщение об ошибке при попытке чтения непосредственно из Console в int, поскольку функция Console.ReadLine возвращает значение string.

Кроме того, вы захотите использовать статические функции TryParse того типа, в который хотите преобразовать строку.

Например, используя ваш код, мы можем выполнить цикл, пока пользовательский ввод недопустим, например, если они вводят "x" для числа, используя функцию TryParse:

string val;
int Mass1, LilNum, Mass2, LilNum2, distance;

do {
    Console.Write("Enter Mass1 ");
    val = Console.ReadLine();
} while (!int.TryParse(val, out Mass1));

do {
    Console.Write("Enter Lil Numbers ");
    val = Console.ReadLine();
} while (!int.TryParse(val, out LilNum));

do {
    Console.Write("Enter Mass2 ");
    val = Console.ReadLine();
} while (!int.TryParse(val, out Mass2));

do {
    Console.Write("Enter Lil Numbers ");
    val = Console.ReadLine();
} while (!int.TryParse(val, out LilNum2));

do {
    Console.Write("Enter Distance between Mass1 & 2 ");
    val = Console.ReadLine();
} while (!int.TryParse(val, out distance));

Или вы мог бы поместить этот цикл в функцию, например, так:

public static void ParseUserInput(string msg, out int outval)
{
    string val;
    do {
        Console.Write(msg);
        val = Console.ReadLine();
    } while (!int.TryParse(val, out outval));
}

public static void Main()
{
    int Mass1, LilNum, Mass2, LilNum2, distance;
    ParseUserInput("Enter Mass1 ", out Mass1);
    ParseUserInput("Enter Lil Numbers ", out LilNum);
    ParseUserInput("Enter Mass2 ", out Mass2);
    ParseUserInput("Enter Lil Numbers ", out LilNum2);
    ParseUserInput("Enter Distance between Mass1 & 2 ", out distance);
    Console.WriteLine("Mass 3: {0}", Mass1/Mass2);
}

Этот код использует функцию int.TryParse , но для всех других примитивных чисел есть также TryParse типы, такие как long, double и т. д. Функция TryParse вернет false, если строка является недопустимым числовым значением, и true, если анализ завершился успешно; если анализ завершится успешно, значение будет помещено в значение out.

Вы также можете использовать функцию Parse того типа, который вы конвертируете, например, int.Parse , однако вам необходимо учитывать, что функция Parse будет выдавать [ 1121] если синтаксический анализ завершился неудачно, например:

try {
    Console.Write("Enter a number: ");
    int val = int.Parse(Console.ReadLine());
    Console.WriteLine("Number: {0}", val);
} catch (Exception ex) {
    Console.WriteLine("There was an error parsing the number: {0}", ex);
}

Просто помните, что вы не можете доверять пользовательскому вводу и должны проверять введенное значение в пределах, допустимых для вашей программы. Например, ваш Mass2 не может быть значением 0, так как вы делите Mass1 на него для Mass3 (int Mass3 = Mass1/Mass2;). Кроме того, вы, вероятно, захотите преобразовать значения int в float для вашего Mass3, например, float Mass3 = (float)Mass1/Mass2;

Я надеюсь, что это может помочь.

11
задан Vertexwahn 4 March 2016 в 16:13
поделиться

4 ответа

В течение последних двух дней я кодировал бота с помощью Python и IRCLib. Поскольку я кодирую интерфейс связи, мне нужно было видеть необработанные данные, передаваемые между сервером и клиентом. Итак, мне нужен IRC-сервер, который бы это поддерживал. Сначала я использовал IRCD, и все было нормально. Но через некоторое время я понял, что мне не хватает некоторых функций, которых не было в IRCD, поскольку он устарел. Итак, после дальнейшего исследования я нашел ngIRCd.

Я скомпилировал его из исходного кода с этими параметрами «--enable-sniffer --enable-debug». Теперь, когда я хочу увидеть информацию, передаваемую между моим ботом и моим клиентом, мне нужно только запустить сервер с опциями -n и -s. Примерно так: ngircd -n -s

Вот сайт сервера: http://ngircd.barton.de/

6
ответ дан 3 December 2019 в 06:48
поделиться

Нереальный IRCd - то, что я наконец выбрал для хостинга IRCD. Почему? Halfop, администратор/защищать, основатель/владелец, усовершенствовал оператор acl, vHost через i:line и и т.д...

Также посмотрите

2
ответ дан 3 December 2019 в 06:48
поделиться

Нереальный IRCd полнофункционален если немного комплекса на установке.

9
ответ дан 3 December 2019 в 06:48
поделиться

Используйте XMPP вместо этого. IRC очень хорошо не разработан для Вашей ситуации; это может быть сделано работать, но это - большая боль.

1
ответ дан 3 December 2019 в 06:48
поделиться
Другие вопросы по тегам:

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