Skip to content

Commit

Permalink
Server displays current connected IPs
Browse files Browse the repository at this point in the history
  • Loading branch information
CarsonRoscoe committed Mar 22, 2016
1 parent facd663 commit b5ff12b
Show file tree
Hide file tree
Showing 5 changed files with 147 additions and 9 deletions.
93 changes: 93 additions & 0 deletions linkedList.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
/*#include "linkedList.h"
void createLinkedList(node_t * head, char * ip) {
head = malloc(sizeof(node_t));
if (head == NULL) {
return;
}
strcpy(head->ip, ip);
head->next = NULL;
}
void push(node_t * head, char * ip) {
node_t * current = head;
while (current->next != NULL) {
current = current->next;
}
current->next = malloc(sizeof(node_t));
strcpy(current->next->ip, ip);
current->next->next = NULL;
}
void popFirst(node_t ** head) {
node_t * next_node = NULL;
if (*head == NULL) {
return;
}
next_node = (*head)->next;
free(*head);
*head = next_node;
}
void popLast(node_t * head) {
node_t * current;
if (head->next == NULL) {
free(head);
head = NULL;
return;
}
current = head;
while (current->next->next != NULL) {
current = current->next;
}
}
void popByIndex(node_t ** head, int index) {
int i = 0;
node_t * current = *head;
node_t * temp_node = NULL;
if (index == 0) {
popFirst(head);
return;
}
for (int i = 0; i < index-1; i++) {
if (current->next == NULL) {
return;
}
current = current->next;
}
temp_node = current->next;
current->next = temp_node->next;
free(temp_node);
}
void clearLinkedList(node_t ** head) {
node_t * current = * head;
node_t * previous;
while (current->next != NULL) {
previous = current;
current = current->next;
free(current);
}
free(current);
}
void printAllAddresses(node_t * head) {
node_t * current = head;
while(current->next != NULL) {
printf("%s\n", current->ip);
current = current->next;
}
printf("%s\n", current->ip);
}
*/
24 changes: 24 additions & 0 deletions linkedList.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*#ifndef LINKEDLIST_H
#define LINKEDLIST_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct node {
char * ip;
struct node *next;
};
typedef struct node node_t;
void createLinkedList(node_t * head, char * ip);
void push(node_t * head, char * ip);
void popFirst(node_t ** head);
void popLast(node_t * head);
void popByIndex(node_t ** head, int index);
void clearLinkedList(node_t ** head);
void printAllAddresses(node_t * head);
#endif //LINKEDLIST_H
*/
Binary file modified server
Binary file not shown.
33 changes: 24 additions & 9 deletions server.c
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ int main (int argc, char **argv) {
FD_ZERO(&allSet);
FD_SET(listeningSocketDescriptor, &allSet);

InitializeAddresses();

while (TRUE) {
curSet = allSet; // structure assignment
Expand All @@ -61,8 +62,6 @@ int main (int argc, char **argv) {
SystemFatal("accept error");
}

printf("Remote Address: %s\n", inet_ntoa(clientAddress.sin_addr));

for (i = 0; i < FD_SETSIZE; i++) {
if (client[i] < 0) {
client[i] = newSocketDescriptor; // save descriptor
Expand All @@ -73,8 +72,12 @@ int main (int argc, char **argv) {
if (i == FD_SETSIZE) {
printf ("Too many clients\n");
exit(1);
} else {
strcpy(addresses[i], inet_ntoa(clientAddress.sin_addr));
}

Refresh();

FD_SET (newSocketDescriptor, &allSet); // add new descriptor to set
if (newSocketDescriptor > clientLatestSocket) {
clientLatestSocket = newSocketDescriptor; // for select
Expand Down Expand Up @@ -103,6 +106,8 @@ int main (int argc, char **argv) {
printf("Remote Address: %s closed connection\n", inet_ntoa(clientAddress.sin_addr));
close(curClientSocket);
FD_CLR(curClientSocket, &allSet);
strcpy(addresses[i], "");
Refresh();
client[i] = -1;
continue;
}
Expand All @@ -111,6 +116,8 @@ int main (int argc, char **argv) {
printf("Remote Address: %s closed connection\n", inet_ntoa(clientAddress.sin_addr));
close(curClientSocket);
FD_CLR(curClientSocket, &allSet);
strcpy(addresses[i], "");
Refresh();
client[i] = -1;
} else {
AddAddress(buf, inet_ntoa(clientAddress.sin_addr));
Expand All @@ -131,12 +138,6 @@ int main (int argc, char **argv) {
return(0);
}

void Refresh() {
//Clears the screen
printf("%c[2J",27);

}

void AddAddress(char * message, char * address) {
size_t i, j;
char temp[BUFLEN];
Expand All @@ -163,8 +164,22 @@ void AddAddress(char * message, char * address) {
strncpy(message, temp, i+j);
}

void InitializeAddresses() {
size_t i;
for(i = 0; i < LISTENQ; i++)
strcpy(addresses[i], "");
}

void Refresh() {
size_t i;
printf("%s", CLEARSCREENANSI);
for(i = 0; i < LISTENQ; i++)
if (addresses[i][0] != '\0')
printf("%s\n", addresses[i]);
}

// Prints the error stored in errno and aborts the program.
void SystemFatal(const char* errorMessage) {
perror (message);
perror (errorMessage);
exit (EXIT_FAILURE);
}
6 changes: 6 additions & 0 deletions server.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,19 @@

#define SERVER_TCP_PORT 7000 // Default port
#define BUFLEN 255 //Buffer length
#define IPLEN 17
#define TRUE 1
#define LISTENQ 5
#define MAXLINE 4096

const char* CLEARSCREENANSI = "\e[1;1H\e[2J";
char addresses[LISTENQ][IPLEN];

// Function Prototypes
void SystemFatal(const char * errorMessage );
int main (int argc, char **argv);
void AddAddress(char * message, char * address);
void Refresh();
void InitializeAddresses();

#endif //SERVER_H

0 comments on commit b5ff12b

Please sign in to comment.