Added basic receive function

This commit is contained in:
Dane MacFadden
2025-07-10 12:49:58 -06:00
parent a73aa38678
commit 027f626d14
2 changed files with 18 additions and 29 deletions
-18
View File
@@ -19,24 +19,6 @@ list_movers.o: list_movers.c
list_removers.o: list_removers.c list_removers.o: list_removers.c
$(CC) $(CFLAGS) $(CPPFLAGS) -I. -c -o list_removers.o list_removers.c $(CC) $(CFLAGS) $(CPPFLAGS) -I. -c -o list_removers.o list_removers.c
listtest: listtest.o liblist.a
$(CC) $(CFLAGS) -L. -o listtest listtest.o -llist
listtest.o: listtest.c
$(CC) $(CFLAGS) $(CPPFLAGS) -I. -c -o listtest.o listtest.c
liblist.a: list_adders.o list_removers.o list_movers.o
ar -rcs liblist.a list_adders.o list_removers.o list_movers.o
list_adders.o: list_adders.c
$(CC) $(CFLAGS) $(CPPFLAGS) -I. -c -o list_adders.o list_adders.c
list_movers.o: list_movers.c
$(CC) $(CFLAGS) $(CPPFLAGS) -I. -c -o list_movers.o list_movers.c
list_removers.o: list_removers.c
$(CC) $(CFLAGS) $(CPPFLAGS) -I. -c -o list_removers.o list_removers.c
clean: clean:
+18 -11
View File
@@ -43,13 +43,20 @@ void *sender(void *arg) {
while (1) { while (1) {
pthread_mutex_lock(&sendmut); pthread_mutex_lock(&sendmut);
msg = ListTrim(sendlist); msg = ListTrim(sendlist);
send(sockfd, msg, 30, NULL); send(sockfd, msg, 30, 0);
pthread_mutex_unlock(&sendmut); pthread_mutex_unlock(&sendmut);
} }
return 0; return 0;
} }
void *receiver(void *arg) { void *receiver(void *arg) {
char *msg;
while (1) {
recv(sockfd, msg, 30, 0);
pthread_mutex_lock(&receivemut);
ListAppend(receivelist, msg);
pthread_mutex_unlock(&receivemut);
}
return 0; return 0;
} }
@@ -113,19 +120,19 @@ int main(int argc, char* argv[]) {
} }
for (p = servinfo; p != NULL; p = p->ai_next) { for (p = servinfo; p != NULL; p = p->ai_next) {
if ((socketfd = socket(p->ai_family, if ((sockfd = socket(p->ai_family,
p->ai_socktype, p->ai_socktype,
p->ai_protocol)) == -1) { p->ai_protocol)) == -1) {
perror("Server: socket"); perror("Server: socket");
continue; continue;
} }
if (setsockopt(socketfd, SOL_SOCKET, SO_REUSEADDR, &yes, if (setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &yes,
sizeof(int)) == -1) { sizeof(int)) == -1) {
perror("setsockopt"); perror("setsockopt");
exit(1); exit(1);
} }
if (bind(socketfd, servinfo->ai_addr, servinfo->ai_addrlen) == -1) { if (bind(sockfd, servinfo->ai_addr, servinfo->ai_addrlen) == -1) {
close(socketfd); close(sockfd);
perror("Server: bind"); perror("Server: bind");
continue; continue;
} }
@@ -141,14 +148,14 @@ int main(int argc, char* argv[]) {
} }
freeaddrinfo(servinfo); freeaddrinfo(servinfo);
if (listen(socketfd, BACKLOG) == -1) { if (listen(sockfd, BACKLOG) == -1) {
perror("listen"); perror("listen");
exit(1); exit(1);
} }
sin_size = sizeof their_addr; sin_size = sizeof their_addr;
printf("Waiting for connection...\n"); printf("Waiting for connection...\n");
confd = accept(socketfd, (struct sockaddr *)&their_addr, &sin_size); confd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size);
if (confd == -1) { if (confd == -1) {
perror("accept"); perror("accept");
} }
@@ -169,7 +176,7 @@ int main(int argc, char* argv[]) {
exit(1); exit(1);
} }
for (q = servinfo; q != NULL; q = q->ai_next) { for (q = servinfo; q != NULL; q = q->ai_next) {
if ((socketfd = socket(q->ai_family, if ((sockfd = socket(q->ai_family,
q->ai_socktype, q->ai_socktype,
q->ai_protocol)) == -1) { q->ai_protocol)) == -1) {
perror("Client: socket"); perror("Client: socket");
@@ -179,9 +186,9 @@ int main(int argc, char* argv[]) {
s, sizeof s); s, sizeof s);
printf("Client: attempting connection to %s\n", s); printf("Client: attempting connection to %s\n", s);
if (connect(socketfd, q->ai_addr, q->ai_addrlen) == -1) { if (connect(sockfd, q->ai_addr, q->ai_addrlen) == -1) {
perror("Client: connect"); perror("Client: connect");
close(socketfd); close(sockfd);
continue; continue;
} }
break; break;
@@ -199,7 +206,7 @@ int main(int argc, char* argv[]) {
pthread_create(&input_thread, NULL, input, (void*) msg); pthread_create(&input_thread, NULL, input, (void*) msg);
pthread_join(input_thread, NULL); pthread_join(input_thread, NULL);
close(socketfd); close(sockfd);
close(confd); close(confd);
return 0; return 0;
} }