Покажи Публикации - galfyo
* Виж публикациите на потр. | Виж темите на потр. | Виж прикачените файлове на потр
Страници: [1]
1  Нетехнически теми / Пътят към wiki.linux-bg.org минава оттук / Re: Ей тази тема ми помогна много... -: 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

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

Надявам са все някога командата да помогне на някой. На мен ми отне няколко дълги минути да намеря точното решение.
2  Нетехнически теми / Пътят към wiki.linux-bg.org минава оттук / Re: Ей тази тема ми помогна много... -: Oct 24, 2019, 19:13
Ето и един трик от мен:
Ако имате протокол който работи с по един байт и искате да стартирате клиентско приложение, то може да използвате командата по-долу:

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

Страници: [1]