diff --git a/.gitignore b/.gitignore index f8668bc..9e6363d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ server .DS_Store package.jpg assets +package.mp4 +avServer_test +avServer diff --git a/avServer b/avServer index 53373c6..42f83a6 100755 Binary files a/avServer and b/avServer differ diff --git a/avatarServer.c b/avatarServer.c index 8c6747d..26a6a32 100644 --- a/avatarServer.c +++ b/avatarServer.c @@ -5,6 +5,7 @@ #include #include #include +#include #define PORT 8080 @@ -16,6 +17,7 @@ int main(int argc, char const *argv[]) int addrlen = sizeof(address); char buffer[1024]; char *overMessage = "over"; + srand(time(NULL)); // Creating socket file descriptor if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) @@ -54,12 +56,16 @@ int main(int argc, char const *argv[]) { return -1; } + int start = clock(); while ((read_avatar = read(avatar_fd, buffer, sizeof(buffer))) > 0) { printf("%d\n", read_avatar); send(new_socket, buffer, sizeof(buffer), 0); } send(new_socket, overMessage, sizeof(overMessage), 0); + int stop = clock(); + + printf("%f", ((double)stop - start) / CLOCKS_PER_SEC); close(server_fd); close(new_socket); diff --git a/server.c b/server.c index ce17cc7..809267b 100644 --- a/server.c +++ b/server.c @@ -7,6 +7,7 @@ #include #include #include +#include typedef struct { @@ -68,6 +69,14 @@ int main(void) myAddrForClients[0].sin_addr.s_addr = INADDR_ANY; myAddrForClients[1].sin_addr.s_addr = INADDR_ANY; + pthread_t video_thread; + if (pthread_create(&video_thread, NULL, videoHandler, NULL) < 0) + { + printf("Error"); + perror('video_thread'); + return -1; + }; + for (i = 0; i < 2; i++) { if ((sock[i] = socket(AF_INET, SOCK_DGRAM, 0)) < 0) @@ -192,12 +201,15 @@ void Error(int err) void *videoHandler() { - + printf("video_handler\n"); char video_buffer[1024]; + struct stat *movieInfo; int counter = 0; //Counts users that request video data int VideoSocketTCP; int new_socket; + int read_movie; struct sockaddr_in video_address_tcp; + int addrlen = sizeof(video_address_tcp); if ((VideoSocketTCP = socket(AF_INET, SOCK_STREAM, 0)) < 0) { @@ -223,11 +235,20 @@ void *videoHandler() while (counter < 2) { if ((new_socket = accept(VideoSocketTCP, (struct sockaddr *)&video_address_tcp, - sizeof(video_address_tcp))) < 0) + (socklen_t)&addrlen) < 0)) { perror("accept"); return -1; } + + int movie_open = open("assets/test3.mp4", O_RDONLY); + int movie_file_stat = fstat(movie_open, movieInfo); + send(new_socket, &movieInfo->st_size, sizeof(movieInfo->st_size), 0); + while ((read_movie = read(movie_open, video_buffer, sizeof(video_buffer))) > 0) + { + send(new_socket, video_buffer, sizeof(video_buffer), 0); + } + counter++; } close(VideoSocketTCP);