diff --git a/Makefile b/Makefile index e49e931..17d9fa7 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,17 @@ -all: bin/net bin/test bin/main +all: bin/test bin/main -bin/net: net.c - mkdir -pv bin - gcc -o bin/net net.c +#bin/net: net.c +# mkdir -pv bin +# gcc -o bin/net net.c bin/test: test.c mkdir -pv bin gcc -o bin/test test.c -bin/main: main.c +bin/main: main.c net.c mkdir -pv bin gcc -o bin/main main.c diff --git a/main.c b/main.c index 47e9f59..c41af36 100644 --- a/main.c +++ b/main.c @@ -2,14 +2,13 @@ #include #include +#include "misc.h" +#include "net.c" + + #define MODE_SERVER 0 #define MODE_CLIENT 1 -struct prog_info { - int mode; - int client_num; - int port; -} prog_info; int parseArgs(struct prog_info *pinfo, int argc, char **argv) { pinfo->mode = MODE_SERVER; @@ -66,13 +65,12 @@ int main(int argc, char **argv) { printf("port: %d\n", prog_info.port); if (prog_info.mode == MODE_SERVER) { printf("runnin in SERVER mode\n"); - // ... + ret = run_server(&prog_info); } else { printf("running in CLIENT mode, using client number %d\n", prog_info.client_num); // ... } - return 0; } return ret; } diff --git a/misc.h b/misc.h new file mode 100644 index 0000000..f36d018 --- /dev/null +++ b/misc.h @@ -0,0 +1,10 @@ +#ifndef __MISC +# define __MISC + +struct prog_info { + int mode; + int client_num; + int port; +} prog_info; + +#endif diff --git a/net.c b/net.c index d1d7aed..e425a84 100644 --- a/net.c +++ b/net.c @@ -10,7 +10,13 @@ #include #include -#define PORT "4711" +// usleep support +#include + +#include "misc.h" + +#define PORT(p) PORTSTR(p) +#define PORTSTR(p) #p void *get_in_addr(struct sockaddr *sa) { @@ -21,17 +27,20 @@ void *get_in_addr(struct sockaddr *sa) return &(((struct sockaddr_in6*)sa)->sin6_addr); } -int main (int argc, char **argv) { +int run_server(const struct prog_info *pinfo) { struct addrinfo hints, *servinfo; + char portbuf[6]; memset(&hints, 0, sizeof(hints)); hints.ai_family = AF_INET; // IPv4 hints.ai_socktype = SOCK_DGRAM; // UDP hints.ai_flags = AI_PASSIVE; + sprintf(portbuf, "%d", pinfo->port); + int rv; - if ((rv = getaddrinfo(NULL, PORT, &hints, &servinfo)) != 0) { + if ((rv = getaddrinfo(NULL, portbuf, &hints, &servinfo)) != 0) { fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv)); return 1; }