This shows you the differences between two versions of the page.
| — | sdk:scripts:tcpserver [2015/05/05 15:04] (current) – created - external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== SDK Script tcpserver.are ====== | ||
| + | <code c tcpserver.are> | ||
| + | /* DESC: This script implements a TCP server which is able to receive messages. | ||
| + | * Copyright (C) 2012 NetModule AG, Switzerland | ||
| + | */ | ||
| + | |||
| + | MAX_CONNECTIONS = 1; | ||
| + | |||
| + | void usage() | ||
| + | { | ||
| + | printf(" | ||
| + | exit(1); | ||
| + | } | ||
| + | |||
| + | if (argc < 2) { | ||
| + | usage(); | ||
| + | } | ||
| + | |||
| + | port = (int) argv[1]; | ||
| + | timeout = 10; | ||
| + | |||
| + | sock = socket(AF_INET, | ||
| + | if (sock < 0) { | ||
| + | printf(" | ||
| + | exit(1); | ||
| + | } | ||
| + | |||
| + | ret = bind(sock, port, "" | ||
| + | if (ret == -1) { | ||
| + | printf(" | ||
| + | close(sock); | ||
| + | exit(1); | ||
| + | } | ||
| + | |||
| + | ret = listen(sock, | ||
| + | if (ret == -1) { | ||
| + | printf(" | ||
| + | close(sock); | ||
| + | exit(1); | ||
| + | } | ||
| + | |||
| + | printf(" | ||
| + | |||
| + | quit = 0; | ||
| + | while (!quit) { | ||
| + | client = accept(sock); | ||
| + | if (client < 0) { | ||
| + | printf(" | ||
| + | sleep(1); | ||
| + | continue; | ||
| + | } | ||
| + | |||
| + | printf(" | ||
| + | | ||
| + | while (1) { | ||
| + | /* wait for socket data */ | ||
| + | rv = select(client, | ||
| + | |||
| + | if (rv == -1) { | ||
| + | printf(" | ||
| + | close(sock); | ||
| + | exit(1); | ||
| + | } else if (rv == 0) { | ||
| + | // | ||
| + | } else { | ||
| + | // one or both of the descriptors have data | ||
| + | msg = recv(client); | ||
| + | if (left(msg, | ||
| + | printf(" | ||
| + | quit = 1; | ||
| + | break; | ||
| + | } | ||
| + | if (left(msg, | ||
| + | printf(" | ||
| + | break; | ||
| + | } else if (msg != "" | ||
| + | printf(" | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | close(client); | ||
| + | } | ||
| + | |||
| + | close(sock); | ||
| + | |||
| + | exit(0); | ||
| + | |||
| + | </ | ||