Hensikten med programmet er å kontrollere ekstern hardware som Arduino, Netduino, Raspberry Pi ...
Protokollen er TCP / IP (klient).
UP: 0, makt, 0
NED: 0, med makt, 0
VENSTRE: -Power, makt, 0
HØYRE: makt, makt, 0
MIDT: 0, 0, 0 eller 0, 0, strøm (Zero aktiv)
3 stillinger er overført som 3 bytes (standard): Byte Mode
ASCII-modus: 3 stillinger blir overført som tekst adskilt med komma (endte med \ n)
Session inaktiv: Hver sending i en Serated forbindelse
Session aktiv: Connection aldri stengt, men om nødvendig automatisk reconnect (standard)
Zero inaktiv: Går ikke tilbake til null verdier etter løslatelse
Zero aktiv: Auto retur til null verdier etter løslatelse
Eksempelkode for en server på 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"
void feil (const char * msg)
{
perror (msg);
exit (1);
}
int main (int argc, char * argv [])
{
int sockfd, newsockfd, portno, n;
socklen_t clilen;
char buffer [256];
struct sockaddr_in serv_addr, cli_addr;
sockfd = socket (AF_INET, SOCK_STREAM, 0);
if (sockfd <0)
error ( "Feil ved åpning av socket");
Bzero ((char *) og 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);
if (bind (sockfd, (struct sockaddr *)
& Serv_addr, sizeof (serv_addr)) <0)
error ( "FEIL på bindende");
mens (1)
{
lytte (sockfd, 5);
clilen = sizeof (cli_addr);
newsockfd = akseptere (sockfd, (struct sockaddr *)
& Cli_addr, og clilen);
if (newsockfd <0)
error ( "FEIL på godta");
mens (1)
{
Bzero (buffer, 256);
n = lest (newsockfd, buffer, 3);
if (n <3)
{
error ( "Feil ved lesing fra socket");
break;
}
float TMP1 = (float) buffer [0];
if (TMP1> 127)
TMP1 - = 256;
float TMP2 = (float) buffer [1];
if (TMP2> 127)
TMP2 - = 256;
flyte TMP3 = (float) buffer [2];
if (TMP3> 127)
TMP3 - = 256;
printf ( "% d% d% d \ n", (int) TMP1, (int) TMP2, (int) TMP3);
}
close (newsockfd);
}
close (sockfd);
returnere 0;
}