Сврха апликације је да контролише даљински хардвера као Ардуино, Нетдуино, Распберри Пи ...
Протокол ТЦП / ИП (клијент).
УП: 0, снага, 0
Довн: 0, -Повер, 0
ЛЕВО: -Повер, снага, 0
ДЕСНО: снага, снага, 0
МИДДЛЕ: 0, 0, 0 или 0, 0, снага (нула активна)
Бајт режим: 3 позиције се преносе као 3 бајтова (стандардна)
АСЦИИ мод: 3 позиције се преносе као текст одвојене зарезом (завршен \ н)
Сесија неактиван: Сваки пренос у Сератед вези
Сесија активан: Повезивање никада затворен, али ако је потребно аутоматски за повратно (дефаулт)
Нула неактиван: Нема повратка на нулту вредност након пуштања
Нула активна: ауто повратак на нулту вредност након пуштања
Пример кода за сервер на Распберри Пи:
#инцлуде "стдио.х"
#инцлуде "стдлиб.х"
#инцлуде "стринг.х"
#инцлуде "унистд.х"
#инцлуде "сис / типес.х"
#инцлуде "сис / соцкет.х"
#инцлуде "нетинет / ин.х"
празнина грешка (цхар * мсг)
{
перрор (МСГ);
излаз (1);
}
маин (инт аргц, цхар * аргв [])
{
Инт соцкфд, невсоцкфд, портно, Н;
соцклен_т цлилен;
Чар бафер [256];
струцт соцкаддр_ин серв_аддр, цли_аддр;
соцкфд = соцкет (АФ_ИНЕТ, СОЦК_СТРЕАМ, 0);
ако (соцкфд <0)
грешка ( "Грешка при отварању утичница");
бзеро ((цхар) и серв_аддр, сизеоф (серв_аддр));
портно = 12345;
серв_аддр.син_фамили = АФ_ИНЕТ;
серв_аддр.син_аддр.с_аддр = ИНАДДР_АНИ;
серв_аддр.син_порт = хтонс (портно);
ако (везати (соцкфд, (струцт соцкаддр *)
И серв_аддр, сизеоф (серв_аддр)) <0)
грешка ( "Грешка при везивање");
док (1)
{
листен (соцкфд, 5);
цлилен = сизеоф (цли_аддр);
невсоцкфд = аццепт (соцкфд, (струцт соцкаддр *)
& Цли_аддр, & цлилен);
ако (невсоцкфд <0)
грешка ( "Грешка при прихватити");
док (1)
{
бзеро (бафер, 256);
Н = реад (невсоцкфд, тампон, 3);
иф (н <3)
{
грешка ( "Еррор реадинг из грла");
бреак;
}
пловак тмп1 = (флоат) буффер [0];
ако (тмп1> 127)
тмп1 - = 256;
пловак тмп2 = (флоат) буффер [1];
ако (тмп2> 127)
тмп2 - = 256;
флоат ТМП3 = (флоат) бафер [2];
ако (ТМП3> 127)
ТМП3 - = 256;
принтф ( "% д% д% д \ н", (инт) тмп1, (Инт) тмп2, (Инт) ТМП3);
}
близу (невсоцкфд);
}
близу (соцкфд);
ретурн 0;
}