The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Перевод вывода в UDP порт через /dev/XXX"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы OpenNET: Виртуальная конференция (Public)
Изначальное сообщение [Проследить за развитием треда]

"Перевод вывода в UDP порт через /dev/XXX"
Сообщение от slavon emailИскать по авторуВ закладки(ok) on 22-Июн-04, 11:39  (MSK)
Привет народ.
Вопрос... можно ли вывод кинуть на UDP порт через девайсы? у меня сейчас всё выводится в /dev/null. Если нет, то как реализщвать вывод... оочень большая прога и идёт везде обычный printf... переписывать всёт мутарно

вот кусок проги

int main(int argc, char **argv) {
if ( argc >= 2 ) {

int null_rd, null_wr;

if(fork()) exit(0);
setsid();
if(fork()) exit(0);

null_rd = open("/dev/null", O_RDONLY);
null_wr = open("/dev/null", O_WRONLY);

if( null_rd == -1 || null_wr == -1 ) {
/* couldn't open /dev/null?! */
exit(1);
}

dup2(null_rd, 0);
dup2(null_wr, 1);
dup2(null_wr, 2);

umask(0);
alarm(0);

       for(;;){
                    int ret = system("./pinger");
       }
        }
        Pinger();
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от slavon emailИскать по авторуВ закладки(ok) on 22-Июн-04, 16:07  (MSK)
>Привет народ.
>Вопрос... можно ли вывод кинуть на UDP порт через девайсы? у меня
>сейчас всё выводится в /dev/null. Если нет, то как реализщвать вывод...
>оочень большая прога и идёт везде обычный printf... переписывать всёт мутарно
>
>
>вот кусок проги
>
>int main(int argc, char **argv) {
> if ( argc >= 2 ) {
>
> int null_rd, null_wr;
>
> if(fork()) exit(0);
> setsid();
> if(fork()) exit(0);
>
> null_rd = open("/dev/null", O_RDONLY);
> null_wr = open("/dev/null", O_WRONLY);
>
> if( null_rd == -1 || null_wr == -1 ) {
>  /* couldn't open /dev/null?! */
>  exit(1);
> }
>
> dup2(null_rd, 0);
> dup2(null_wr, 1);
> dup2(null_wr, 2);
>
> umask(0);
> alarm(0);
>
>        for(;;){
>            
>        int ret =
>system("./pinger");
>        }
>        }
>        Pinger();
>}

ну неужели никто не поможет???

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от Fes emailИскать по авторуВ закладки(??) on 22-Июн-04, 17:02  (MSK)
А зачем тебе это?
Ваще-то есть такое понятие socket и книжка "Сети TCP/IP - разработка приложений для Linux/Posix" by Дуглас Э.Камер и Дэвид Л. Стивенс. Там сокеты разжёванны очень неплохо.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от slavon emailИскать по авторуВ закладки(ok) on 22-Июн-04, 17:04  (MSK)
>А зачем тебе это?
>Ваще-то есть такое понятие socket и книжка "Сети TCP/IP - разработка приложений
>для Linux/Posix" by Дуглас Э.Камер и Дэвид Л. Стивенс. Там сокеты
>разжёванны очень неплохо.

Код содержит кучу Printf... надо чтобы они все выводились в какой-нить UDP порт... чтобы я по сети мог зайти на порт и отслеживать что делает программа

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от Fes emailИскать по авторуВ закладки(??) on 22-Июн-04, 17:21  (MSK)
Переделай прогу. Вместо printf  поствь write (send). В принципе, ИМХО, для работы с сетью сокеты очень удобны, для этого-то интерфейс сокетов и разрабатывался. А вот насчёт работы dev-айсов через udp port, к сожалению, я не советчик....
p.s. Я так понял нужно организовать лог-сервер для отладки/контроля над прогой на удалённой машине. Теоретически не сложно это написать... т.е. создасть сокеты на двух точках (один сервер - другой клиент) и просто тупо send (socket, &buff) от сервера клиенту. А там уж хоть в лог пиши, хоть в stdout и наблюдай... не принципиально вообщем что дальше :)

p.s. Я вот щас сам читаю и юзаю вот эту буку:
http://www.williamspublishing.com/Books/5-8459-0296-7.html

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от slavon emailИскать по авторуВ закладки(ok) on 22-Июн-04, 17:26  (MSK)
>Переделай прогу. Вместо printf  поствь write (send). В принципе, ИМХО, для
>работы с сетью сокеты очень удобны, для этого-то интерфейс сокетов и
>разрабатывался. А вот насчёт работы dev-айсов через udp port, к сожалению,
>я не советчик....
>p.s. Я так понял нужно организовать лог-сервер для отладки/контроля над прогой на
>удалённой машине. Теоретически не сложно это написать... т.е. создасть сокеты на
>двух точках (один сервер - другой клиент) и просто тупо send
>(socket, &buff) от сервера клиенту. А там уж хоть в лог
>пиши, хоть в stdout и наблюдай... не принципиально вообщем что дальше
>:)
>
>p.s. Я вот щас сам читаю и юзаю вот эту буку:
>http://www.williamspublishing.com/Books/5-8459-0296-7.html

Гм.. тут маленькая проблема... я с UDP не работал... нужно чтобы прога пихала всё в какой-то порт, и если на нём сидит клиент - то читает этот мусор... если нет... то инфа просто уничтожается... вот и думаю как лучше сделать :( короче Streem нужно организовать... причём тормазить на всяких Accept'ах не должно (как на TCP)... ему пофиг должно быть, конектится кто или нет... просто в тупую слать инфу. :(((

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от Fes emailИскать по авторуВ закладки(??) on 22-Июн-04, 17:39  (MSK)
Ну я ж те грю - юзай сокеты. По-моему та, с такой задачей, без них не обойдёшься. Если почитать часик-второй доки, мона и прогу сваргнаить, ничё экстраординарного в пересылке инфы через UDP - сокет нету... Только вот... протокол UDP характеризуется ненадёжностью соединения, так что если ты по локалке будешь всё делать - не беда.. а вот если через инет пакеты могут терятся и дублироваться.
Вообщем суть такова: RTFM! :-)
  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от slavon emailИскать по авторуВ закладки(ok) on 22-Июн-04, 17:43  (MSK)
>Ну я ж те грю - юзай сокеты. По-моему та, с такой
>задачей, без них не обойдёшься. Если почитать часик-второй доки, мона и
>прогу сваргнаить, ничё экстраординарного в пересылке инфы через UDP - сокет
>нету... Только вот... протокол UDP характеризуется ненадёжностью соединения, так что если
>ты по локалке будешь всё делать - не беда.. а вот
>если через инет пакеты могут терятся и дублироваться.
>Вообщем суть такова: RTFM! :-)

Да риад я риад.. :)
Уже 2 недели риад

Хотелось найти способ просто перенаправлять вывод в порт... без гемороя с перелопачиванием программы...
Написать то вывод не тяжело... хочется типа так сделать

   null_rd = open("/dev/null", O_RDONLY);
   null_wr = open("/dev/log887port", O_WRONLY);

и всё.
дальше telnet localhost 887
и зырить чё прога пишет

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от Konstantin Stopani emailИскать по авторуВ закладки on 22-Июн-04, 17:45  (MSK)
>Вопрос... можно ли вывод кинуть на UDP порт через девайсы? у меня
>сейчас всё выводится в /dev/null. Если нет, то как реализщвать вывод...
>оочень большая прога и идёт везде обычный printf...  

Можно попробовать netcat (netcat.sourceforge.net):

система1% prog | nc -u система2 порт

система2% nc -l -u -p порт

или что-то в этом роде...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от slavon emailИскать по авторуВ закладки(ok) on 22-Июн-04, 17:50  (MSK)
>>Вопрос... можно ли вывод кинуть на UDP порт через девайсы? у меня
>>сейчас всё выводится в /dev/null. Если нет, то как реализщвать вывод...
>>оочень большая прога и идёт везде обычный printf...  
>
>Можно попробовать netcat (netcat.sourceforge.net):
>
>система1% prog | nc -u система2 порт
>
>система2% nc -l -u -p порт
>
>или что-то в этом роде...

Предлагали такую фичу... вот тока я боюсь что
null_wr = open("nc -l -u -p порт", O_WRONLY);
Или ошибку выдаст, или попробует в сам NC записать чтонибудь,
тоесть будет не
prog | nc -u система2 порт

prog > nc -u система2 порт

Если какнить это победить - это было бы решением проблемы

  Рекомендовать в FAQ | Cообщить модератору | Наверх

10. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от slavon emailИскать по авторуВ закладки(ok) on 22-Июн-04, 18:00  (MSK)
>>>Вопрос... можно ли вывод кинуть на UDP порт через девайсы? у меня
>>>сейчас всё выводится в /dev/null. Если нет, то как реализщвать вывод...
>>>оочень большая прога и идёт везде обычный printf...  
>>
>>Можно попробовать netcat (netcat.sourceforge.net):
>>
>>система1% prog | nc -u система2 порт
>>
>>система2% nc -l -u -p порт
>>
>>или что-то в этом роде...
>
>Предлагали такую фичу... вот тока я боюсь что
>null_wr = open("nc -l -u -p порт", O_WRONLY);
>Или ошибку выдаст, или попробует в сам NC записать чтонибудь,
>тоесть будет не
>prog | nc -u система2 порт
>,а
>prog > nc -u система2 порт
>
>Если какнить это победить - это было бы решением проблемы

Сорри, туплю... можно же
           int ret = system("nc -l -u -p порт | ./pinger");

всем спасиба.. ;)

  Рекомендовать в FAQ | Cообщить модератору | Наверх

11. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от Konstantin Stopani emailИскать по авторуВ закладки on 22-Июн-04, 18:11  (MSK)
>>Предлагали такую фичу... вот тока я боюсь что
>>null_wr = open("nc -l -u -p порт", O_WRONLY);
>>Или ошибку выдаст, или попробует в сам NC записать чтонибудь,
нет, здесь надо создать трубу и на одном конце писать в нее printf'ом,

а с другой стороны назначить stdin и сделать execl("usr/bin/nc", "-u", "хост", "порт", NULL)


  Рекомендовать в FAQ | Cообщить модератору | Наверх

12. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от slavon emailИскать по авторуВ закладки(ok) on 22-Июн-04, 18:17  (MSK)
>>>Предлагали такую фичу... вот тока я боюсь что
>>>null_wr = open("nc -l -u -p порт", O_WRONLY);
>>>Или ошибку выдаст, или попробует в сам NC записать чтонибудь,
>нет, здесь надо создать трубу и на одном конце писать в нее
>printf'ом,
>
>а с другой стороны назначить stdin и сделать execl("usr/bin/nc", "-u", "хост", "порт",
>NULL)

Если не сложно, можно ли кусочек кода - пример написать?
Заранее спасибо

  Рекомендовать в FAQ | Cообщить модератору | Наверх

13. "Перевод вывода в UDP порт через /dev/XXX"
Сообщение от Konstantin Stopani emailИскать по авторуВ закладки on 22-Июн-04, 18:59  (MSK)
>Если не сложно, можно ли кусочек кода - пример написать?
>Заранее спасибо

#include <stdio.h>
#include <unistd.h>

int main()
{
  int fd[2];
  pipe(fd);

  if(fork()) {
    close(1);
    dup2(fd[1], 1);
    printf("hello\n");
  } else {
    close(0);
    dup2(fd[0], 0);
    execl("/usr/bin/netcat", "netcat", "-u", "localhost", "1234", NULL);
  }
  return 0;
}

(у меня nc зовется netcat - это SuSE)
на другом терминале запущено
nc -u -l -p 1234

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру