Мэта прыкладання з'яўляецца кантроль аддаленага абсталявання, як Arduino, Netduino, Raspberry Pi ...
Пратакол TCP / IP (кліент).
UP: 0, магутнасць, 0
DOWN: 0, -степени, 0
Злева: -степень, улада, 0
СПРАВА: улада, улада, 0
Сярэдняя: 0, 0, 0 або 0, 0, магутнасць (Нуль актыўны)
Рэжым Байт: 3 пазіцыі перадаюцца як 3 байта (па змаўчанні)
Рэжым ASCII: 3 пазіцыі перадаюцца як тэкст падзеленым коскі (скончылася \ п)
неактыўным Сесія: Кожная перадача ў сувязі Serated
Сесія актыўная: Злучэнне ніколі не закрытая, але пры неабходнасці аўтаматычны RECONNECT (па змаўчанні)
Нуль неактыўным: Няма вяртання да нулявым значэнняў пасля вызвалення
Нуль актыўны: Аўтаматычны вяртанне да нулявым значэнняў пасля вызвалення
Прыклад кода для сервера на Raspberry Pi:
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "unistd.h"
#include "SYS / types.h"
#include "SYS / socket.h"
#include "netinet / in.h"
пустата памылка (Const сімвал * тзд)
{
PError (MSG);
выхад (1);
}
INT галоўны (INT ARGC, сімвал * ARGV [])
{
INT sockfd, newsockfd, portno, п;
socklen_t clilen;
сімвал буфера [256];
структура sockaddr_in serv_addr, cli_addr;
sockfd = сокет (AF_INET, SOCK_STREAM, 0);
калі (sockfd <0)
Памылка ( "памылка адкрыцця сокета");
bzero ((зорачкі *) & serv_addr, SizeOf (serv_addr));
portno = 12345;
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_ANY;
serv_addr.sin_port = htons (portno);
калі (звязваць (sockfd, (структура SOCKADDR *)
& Serv_addr, SizeOf (serv_addr)) <0)
памылка ( "ПАМЫЛКА на звязванне");
у той час як (1)
{
слухаць (sockfd, 5);
clilen = SizeOf (cli_addr);
newsockfd = прыняць (sockfd, (структура SOCKADDR *)
& Cli_addr, & clilen);
калі (newsockfd <0)
памылка ( "ПАМЫЛКА на прыняць");
у той час як (1)
{
bzero (буфер, 256);
п = чытанне (newsockfd, буфер, 3);
калі (п <3)
{
памылка ( "Памылка пры чытанні з сокета");
перапынак;
}
Паплавок tmp1 = (з якая плавае кропкай) буфер [0];
калі (tmp1> 127)
tmp1 - = 256;
Паплавок tmp2 = (з якая плавае кропкай) буфер [1];
калі (tmp2> 127)
tmp2 - = 256;
плаваць TMP3 = (паплавок) буфер [2];
калі (TMP3> 127)
TMP3 - = 256;
Е ( "% d% d% d \ п", (INT) tmp1, (INT) tmp2, (INT) TMP3);
}
блізка (newsockfd);
}
блізка (sockfd);
вяртае 0;
}