-rw-r--r-- | noncore/net/wellenreiter/libwellenreiter/source/sock.cc | 28 | ||||
-rw-r--r-- | noncore/net/wellenreiter/libwellenreiter/source/sock.hh | 1 |
2 files changed, 25 insertions, 4 deletions
diff --git a/noncore/net/wellenreiter/libwellenreiter/source/sock.cc b/noncore/net/wellenreiter/libwellenreiter/source/sock.cc index 2cc16eb..90fc20a 100644 --- a/noncore/net/wellenreiter/libwellenreiter/source/sock.cc +++ b/noncore/net/wellenreiter/libwellenreiter/source/sock.cc @@ -50,2 +50,6 @@ int sendcomm(const char *host, int port, const char *string, ...) + saddr.sin_family = AF_INET; + saddr.sin_port = htons(port); + saddr.sin_addr.s_addr = inet_addr(host); + /* Setup socket */ @@ -57,6 +61,2 @@ int sendcomm(const char *host, int port, const char *string, ...) - saddr.sin_family = AF_INET; - saddr.sin_port = htons(port); - saddr.sin_addr.s_addr = inet_addr(host); - if(sendto(sock, buffer, sizeof(buffer), 0, (struct sockaddr *)&saddr, sizeof(saddr)) < 0) @@ -73 +73,21 @@ int sendcomm(const char *host, int port, const char *string, ...) } + +/* Check for new messages on commsock */ +int recvcomm(int *sock, char *out, int maxlen) +{ + struct sockaddr_in *cliaddr; + socklen_t len=sizeof(struct sockaddr); + char buffer[128], retval[3]; + + memset(buffer, 0, sizeof(buffer)); + if(recvfrom(*sock, buffer, sizeof(buffer)-1, 0, (struct sockaddr *)cliaddr, &len) < 0) + return -1; + + memset(out, 0, maxlen); + memcpy(out, buffer, maxlen - 1); + + memset(retval, 0, sizeof(retval)); + memcpy(retval, out, 2); + + return atoi(retval); +} diff --git a/noncore/net/wellenreiter/libwellenreiter/source/sock.hh b/noncore/net/wellenreiter/libwellenreiter/source/sock.hh index afde641..611e335 100644 --- a/noncore/net/wellenreiter/libwellenreiter/source/sock.hh +++ b/noncore/net/wellenreiter/libwellenreiter/source/sock.hh @@ -17,2 +17,3 @@ int commsock(const char *, int); int sendcomm(const char *, int, const char *, ...); +int recvcomm(int *, char *, int); |