Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Ping по списку адресов с применением system - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Приоритет преобразований внутри if http://www.cyberforum.ru/cpp-beginners/thread926890.html
Всем привет. Рассмотрим такой код: #include <iostream> class C { typedef void (C::*fp)() const; public: operator fp() const {
C++ Не могу вызвать функцию из dll С++ в С# в системе Win 7 64bit, MSVS 2008 Здравствуйте! Уже два дня не могу вызвать функцию из dll C++ в программе, написанная в C#. Программа пишется в MS VS 2008 Win 7 64bit. Сначала опишу С++ проект. Создаю обычное пустое C++ dll... http://www.cyberforum.ru/cpp-beginners/thread926875.html
C++ Коррекция
#include <iostream> #include <string> #include <cstring> int main() { using namespace std; char charr; string str; cout << "Lenght of string in charr before input: " << strlen(charr) <<...
Не удается открыть файл *.lib в MSVS2010 C++
Добрый день! Мне удалось устранить ряд ошибок которые я писал в теме. Но теперь "вываливается" другая ошибка: 1>LINK : fatal error LNK1104: не удается открыть файл "Pr1.lib" Пробывал...
C++ Сформировать целочисленную прямоугольную матрицу http://www.cyberforum.ru/cpp-beginners/thread926845.html
Сформировать целочисленную прямоугольную матрицу A(m,m) следующего вида: 1 2 3 .. m 0 1 2 .. m-1 0 0 1 .. m-2 . . . . . . . . . . 0 0 0 .. 1
C++ тренировки по с++ прочитал книгу по С++ всю))) где тренироваться по кодингу?? подробнее

Показать сообщение отдельно
Dajver_alex
0 / 0 / 1
Регистрация: 21.06.2013
Сообщений: 2
22.07.2013, 16:43  [ТС]
barbudo59, спасибо за вариант, но что-то у меня с ошибками работает. Да и хотелось бы самому создать)
Красивости в виде окон и форм не нужны, достаточно просто консоли. Вся основная проблема сейчас с проклятой функцией system... я уже весь интернет обыскал, начинаю склоняться к использованию icmp.dll... но не верится что-то, что нет простого способа без тонны кода...
может есть какая-то возможность передать из с++ данные в bat-файл? хоть это и извращение, конечно...

Добавлено через 9 минут
По сути алгоритм прост -
1. читаем построчно файл с адресами, записываем строку в переменную.
2. отправляем переменную в функцию system(ping)
3. ловим ответ и делаем с ним что пожелаем(в моем случае пишем в файл rezult.txt)

все пункты кроме ловли ответа работают нормально. Вопрос в том, как заставить функцию возвращать ошибку при ответе от другого узла, потому что ничего похожего на
Bash
1
2
ping /n 2 89.20.33.6|Find /I "TTL=">null
if errorlevel=1 .......
я пока не нашел...

Добавлено через 17 минут
Появилась ещё одна идея - в этом цикле
C++
1
2
3
4
5
 while(!File.eof())
            {
                               getline(File, Line);
                              system("ping " + Line + " >> temp.txt");
                              }
после system вставить поиск в файле temp.txt сочетания "TTL=" и в случае удачи - писать уже в итоговый файл что всё ок.... но это ужасные индусские костыли получаются)

Добавлено через 18 минут
Понемножку движемся вперед. Попробовал ещё раз поэкспериментировать со строкой, передаваемой в system(). Тут есть один момент - команда Find /I "TTL" должна выглядеть именно так, то есть двойные кавычки вокруг TTL. Но в с++ они ограждают параметры, передаваемые в функцию... Пробовал 'TTL' - пишет - "Неправильный формат параметра". Пробовал оградить TTL двойными, а всё остальное одинарными кавычками - ругается компилятор. Помню, что как-то можно передать двойные кавычки в обход компилятора.. но вот деталей что-то не всплывает.

Добавлено через 15 минут
Строить костыли, так строить. Ларчик открылся благодаря добавлению новой переменной Line2, куда из файла была записана строчка |Find /I "TTL=". В итоге на выходе даётся адекватный ответ на ping. Пока что код выглядит вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <fstream>
 
using namespace std;
string a;
string c="res.txt";
 
int system(string cmd) {
    return system(cmd.c_str());
}
 
void ReadFile(string Filename)
{
     string Line2;
     ifstream FiLe(c.c_str());
     getline(FiLe, Line2);
     ifstream File(a.c_str());
     ofstream file("rez.txt");
     string Line;
     
     
            while(!File.eof())
            {                                                
                              getline(File, Line);
                              file << system("ping /n 3 " + Line + Line2) << endl;                              
                              }
                              file.close();
}
                              
 
int main()
{
cout << "Input FileName: ";
cin >> a;
ReadFile(a);
system("pause");
return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru