aboutsummaryrefslogtreecommitdiff
path: root/listener.c
diff options
context:
space:
mode:
authorsotech117 <michael_foiani@brown.edu>2023-09-25 22:21:42 -0400
committersotech117 <michael_foiani@brown.edu>2023-09-25 22:21:42 -0400
commit6a2c567b85be275bb431c09952a88ea4cdf210aa (patch)
treeff649ae093b3b8eb9931e3a2e4cf7bb3e5ce0bb7 /listener.c
parent8c6ae1ecde9faa0af5dacaf7ecf0f9cf47b69159 (diff)
massive restrcuting of code for readability
Diffstat (limited to 'listener.c')
-rw-r--r--listener.c58
1 files changed, 25 insertions, 33 deletions
diff --git a/listener.c b/listener.c
index 04e3030..3b5084b 100644
--- a/listener.c
+++ b/listener.c
@@ -1,5 +1,11 @@
+
/*
-** listener.c -- a datagram sockets "server" demo
+ author: sotech117
+ date: 9/25/2023
+ course: csci1680
+ description: listener for snowcast, a music streaming service
+
+ enjoy :)
*/
#include <stdio.h>
@@ -13,45 +19,30 @@
#include <arpa/inet.h>
#include <netdb.h>
-// #define MYPORT "4950" // the port users will be connecting to
-
-#define MAXBUFLEN 16384
-
-// get sockaddr, IPv4 or IPv6:
-void *get_in_addr(struct sockaddr *sa)
-{
- if (sa->sa_family == AF_INET) {
- return &(((struct sockaddr_in*)sa)->sin_addr);
- }
-
- return &(((struct sockaddr_in6*)sa)->sin6_addr);
-}
+#include "protocol.c"
int main(int argc, char *argv[])
{
- int sockfd;
- struct addrinfo hints, *servinfo, *p;
- int rv;
- int numbytes;
- struct sockaddr_storage their_addr;
- socklen_t addr_len;
- char s[INET6_ADDRSTRLEN];
-
+ // CHECK AND USE ARGUMENTS
+ // -------------------------------------------------------------------------------------------------
if (argc != 2) {
fprintf(stderr,"<udp port>\n");
exit(1);
}
-
+ // get the udp port
const char* udp_port = argv[1];
-
+ // GET UDP SOCKET
+ // -------------------------------------------------------------------------------------------------
+ int sockfd, err;
+ struct addrinfo hints, *servinfo, *p;
memset(&hints, 0, sizeof hints);
hints.ai_family = AF_INET; // set to AF_INET to use IPv4
hints.ai_socktype = SOCK_DGRAM;
hints.ai_flags = AI_PASSIVE; // use my IP
- if ((rv = getaddrinfo(NULL, udp_port, &hints, &servinfo)) != 0) {
- fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(rv));
+ if ((err = getaddrinfo(NULL, udp_port, &hints, &servinfo)) != 0) {
+ fprintf(stderr, "getaddrinfo: %s\n", gai_strerror(err));
return 1;
}
@@ -71,20 +62,21 @@ int main(int argc, char *argv[])
break;
}
-
if (p == NULL) {
fprintf(stderr, "listener: failed to bind socket\n");
return 2;
}
-
freeaddrinfo(servinfo);
- int count = 0;
-
- char buf[MAXBUFLEN];
+ // START READ/WRITE LOOP
+ // -------------------------------------------------------------------------------------------------
+ char buf[MAX_PACKET_SIZE]; // buffer for reading
+ struct sockaddr_storage their_addr; // connector's address information
+ socklen_t addr_len;
while(1) {
addr_len = sizeof their_addr;
- if ((numbytes = recvfrom(sockfd, buf, MAXBUFLEN , 0,
+ int numbytes;
+ if ((numbytes = recvfrom(sockfd, buf, MAX_PACKET_SIZE , 0,
(struct sockaddr *)&their_addr, &addr_len)) == -1) {
perror("recvfrom");
exit(1);
@@ -92,7 +84,7 @@ int main(int argc, char *argv[])
// print the buffer
write(STDOUT_FILENO, buf, numbytes);
- memset(buf, 0, MAXBUFLEN);
+ memset(buf, 0, MAX_PACKET_SIZE);
}
close(sockfd);