From ca9e46c937e75df43d2f80f0d957fabb07892c29 Mon Sep 17 00:00:00 2001 From: Ben Burwell Date: Mon, 29 Apr 2013 16:13:34 -0400 Subject: Init --- receive.h | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 receive.h (limited to 'receive.h') diff --git a/receive.h b/receive.h new file mode 100644 index 0000000..f89922f --- /dev/null +++ b/receive.h @@ -0,0 +1,47 @@ +/** + * Localchat + * Ben Burwell + * + * Thread management functions + */ + +void *receive_function(void *arg) { + + char in_buf[256]; + struct sockaddr_in server_addr; + int addr_len; + int client_sock = socket(AF_INET, SOCK_DGRAM, 0); + int ret_code; + + if (client_sock < 0) { + exit(-1); + } + + server_addr.sin_family = AF_INET; // Address family to use + server_addr.sin_port = htons(CMD_PORT); // Port num to use + server_addr.sin_addr.s_addr = htonl(INADDR_ANY); // Listen on any IP address + ret_code = bind(client_sock, (struct sockaddr *)&server_addr, sizeof(server_addr)); + + while (1) { + + addr_len = sizeof(server_addr); + ret_code = recvfrom(client_sock, in_buf, sizeof(in_buf), 0, (struct sockaddr *)&server_addr, &addr_len); + + if (DEBUG) printf("Received from server: %s (%d) \n", in_buf, ret_code); + parse_command(in_buf); + } + + return; +} + +void start_receive_thread() { + + pthread_t thread; + + if (pthread_create(&thread, NULL, receive_function, NULL) > 0) { + printf("Error starting receive thread \n"); + exit(-1); + } + + return; +} \ No newline at end of file -- cgit v1.2.3