This shows you the differences between two versions of the page.
sdk:scripts:udpserver [2015/05/05 15:04] 127.0.0.1 external edit |
sdk:scripts:udpserver [2022/09/05 12:26] (current) schmitt |
||
---|---|---|---|
Line 2: | Line 2: | ||
<code c udpserver.are> | <code c udpserver.are> | ||
/* DESC: This script implements an UDP server which is able to receive messages. | /* DESC: This script implements an UDP server which is able to receive messages. | ||
- | * Copyright (C) 2012 NetModule AG, Switzerland | + | * Copyright (C) 2012-2016 NetModule AG, Switzerland |
*/ | */ | ||
Line 19: | Line 19: | ||
sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); | sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); | ||
if (sock < 0) { | if (sock < 0) { | ||
- | printf("Unable to open socket\n"); | + | nb_syslog("Unable to open socket"); |
exit(1); | exit(1); | ||
} | } | ||
Line 27: | Line 27: | ||
ret = bind(sock, PORT, addr); | ret = bind(sock, PORT, addr); | ||
if(ret == -1) { | if(ret == -1) { | ||
- | printf("Unable to bind to port: %d\n", PORT); | + | nb_syslog("Unable to bind to port %d", PORT); |
close(sock); | close(sock); | ||
exit(1); | exit(1); | ||
} | } | ||
- | printf("Listening for messages on port %d\n", PORT); | + | nb_syslog("Listening for messages on port %d", PORT); |
while (1) { | while (1) { | ||
- | msg = recvfrom(sock); | + | msg = recvmsg(sock, 3); |
- | if (left(msg, 4) == "quit") { | + | if (is_void(msg)) continue; |
- | printf("Received quit, terminating\n"); | + | |
+ | data = struct_get(msg, "data"); | ||
+ | from = struct_get(msg, "from"); | ||
+ | |||
+ | if (left(data, 4) == "quit") { | ||
+ | nb_syslog("Received quit, terminating"); | ||
break; | break; | ||
- | } else if (msg != "") { | + | } else if (data != "") { |
- | printf("Received message '%s'\n", msg); | + | nb_syslog("Received message '%s' from %s", data, from); |
} | } | ||
} | } |