Автор Тема: Ей тази тема ми помогна много...  (Прочетена 12161 пъти)

galfyo

  • Новаци
  • *
  • Публикации: 2
    • Профил
Re: Ей тази тема ми помогна много...
« Отговор #15 -: Oct 24, 2019, 19:13 »
Ето и един трик от мен:
Ако имате протокол който работи с по един байт и искате да стартирате клиентско приложение, то може да използвате командата по-долу:

stty -icanon && stdbuf -i0 -o0 nc localhost 10000

Активен

Acho

  • Напреднали
  • *****
  • Публикации: 3397
  • Distribution: Slackware, MikroTik - сървърно
  • Window Manager: console only
    • Профил
    • WWW
Re: Ей тази тема ми помогна много...
« Отговор #16 -: Oct 25, 2019, 11:25 »
Е тази дъртата тема е от: Nov 26, 2005 година. Демек, от преди 14 години.

Егати лауреатите, откъде ги изкопавате тия дъртите теми ? Супер-актуални са просто.
Активен

CPU - Intel Quad-Core Q8400, 2.66 GHz; Fan - Intel Box; MB - Intel G41M-T2; RAM - DDR2-800, Kingston HyperX, 2X2048 MB; VC - onboard, Intel G41 Express Chipset; HDD - SeaGate, 160 GB, SATAII; SB - Realtek HD Audio; DVD-RW - TSSTcorp DVD-RW; LAN - Realtek PCI-E GBE Controller; PSU - Fortron 350 Watt.

4096bits

  • Напреднали
  • *****
  • Публикации: 3278
    • Профил
Re: Ей тази тема ми помогна много...
« Отговор #17 -: Oct 25, 2019, 12:56 »
По принцип не е лошо да се знае, как да се изпращат байтове насам-натам. Макар че в днешно време предпочитам да разменям съобщения посредством json или нещо от сорта.
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

galfyo

  • Новаци
  • *
  • Публикации: 2
    • Профил
Re: Ей тази тема ми помогна много...
« Отговор #18 -: Oct 25, 2019, 18:48 »
> Бе не я разбрах супер тая команда,

Ще се опитам да обясня команда като започна с описание на проблема който решава. Ако имате мрежови протокол при който командите са само един байт, както и отговорите на тези команди и не ви се пише собствена програма за изпращане и получаване то може да използвате командата по-долу.

stty -icanon && stdbuf -i0 -o0 nc HOST POST

За пример ще дефинирам следния протокол:

- Сървър слуша на localhost порт 1000
- Клиент се свърза към сървър.
- Комуникацията може да започне СЛЕД като сървъра изпрати един байт. Да речем R.
- Клиентът може да изпрати команда към сървъра която е пак само един байт. Примерно S за показване на текущото състояние на сензор.
- Сървър отговаря с един байт което е текущото състояние на сензора.

По принцип може да използвате NetCat да се свърже със сървъра и да слуша на определения порт по TCP:

    nc localhost 10000

Но, проблем номер едно е, че ако сървъра изпраща само 1 байт към вас, то ще има да го чакате докато се напълни буфера.  Има начин за всяка мрежова програма да се промени размера на буфера. С помощта на  командата по-долу входния и изходния буфер ще са с размер нула. Тоест - изпращаи и получавай веднага.
   
    stdbuf -i0 -o0 програма


Ако се използва само тази команда
   
     stdbuf -i0 -o0 nc localhost 10000

Стигаме до втория проблем. Който е, че самия терминал чака за нов ред за да изпрати командите от мен (в ролята на мрежовия клиент). Това също може да се забрани като се използва

    stty -icanon

И така с командата по-долу

   stty -icanon && stdbuf -i0 -o0 nc localhost 10000

Може безпроблемно да получавате и изпращате малки самотни байтове по мрежата.

Надявам са все някога командата да помогне на някой. На мен ми отне няколко дълги минути да намеря точното решение.
« Последна редакция: Oct 26, 2019, 09:42 от slaff »
Активен

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 5379
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Ей тази тема ми помогна много...
« Отговор #19 -: Oct 25, 2019, 18:59 »
Бе не я разбрах супер тая команда, но ми мяза като да се пуска един неткат да слуша. В тая връзка наистина можеш да си пробваш всякаква мрежова комуникация и дори чат да си организираш. Автора на Неткат беше написал в ръководството, че ако някой стане милионер от това, няма да не се зарадва на чек. До сега не се е чуло, някой да му прати.


п.п. Това мнение времево е преди горното, но поради модерация в темата, падна под него. Извинявам се!
« Последна редакция: Oct 26, 2019, 10:10 от go_fire »
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear

4096bits

  • Напреднали
  • *****
  • Публикации: 3278
    • Профил
Re: Ей тази тема ми помогна много...
« Отговор #20 -: Oct 25, 2019, 19:32 »
Бе не я разбрах супер тая команда, но ми мяза като да се пуска един неткат да слуша. В тая връзка наистина можеш да си пробваш всякаква мрежова комуникация и дори чат да си организираш. Автора на Неткат беше написал в ръководството, че ако някой стане милионер от това, няма да не се зарадва на чек. До сега не се е чуло, някой да му прати.
nc е много мощно инструментче. И много просто. Ако нямаш друга възможност за връзка, върши чудесна работа.
Активен

As they say in Mexico, "Dasvidaniya!" Down there, that's two vidaniyas.

go_fire

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 5379
  • Distribution: Дебиан Сид
  • Window Manager: ROX-Desktop / е17
  • кашик с гранатомет в танково поделение
    • Профил
    • WWW
Re: Ей тази тема ми помогна много...
« Отговор #21 -: Oct 26, 2019, 10:04 »
Galfyo, твоето обяснение наистина е много ценно и наистина трябва да влезе на вики-то.

Специално според мен ще е най-полезно за тия, които експериментират на тема „умен дом“, което е хипер-тенденция в момента и се обсъжда на всякакви конференции.

За индустриалната автоматизация, която е предтечата на това течение, може би не е най-подходящото, защото там си говорим за неща от друго ниво.

Браво!

п.п. Ще се надяваме и в бъдеще да ни поднасяш подобни изненади. Форума определено има нужда от нова кръв.
« Последна редакция: Oct 26, 2019, 10:13 от go_fire »
Активен

В $por4e2 e истината  ;)

***

Aко даваха стипендия за най-глупави, щях да съм човека с най-много Mини Kупъри

***

Reborn since 1998 || 15.09.2007 totally М$ free && conscience clear