Added basic receive function
This commit is contained in:
@@ -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:
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user