From 34938eed4967daa18a1ffda86a6be72caa486883 Mon Sep 17 00:00:00 2001 From: Michal Starski Date: Tue, 20 Nov 2018 14:41:42 +0100 Subject: [PATCH] added shooting mechanism on server --- .gitignore | 1 + server | Bin 13040 -> 0 bytes server.c | 139 +++++++++++++++++++++++++++++------------------------ 3 files changed, 78 insertions(+), 62 deletions(-) create mode 100644 .gitignore delete mode 100755 server diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..254defd --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +server diff --git a/server b/server deleted file mode 100755 index fb9d495f2f5f5d18eb2d09fa4ff62ff241f7508f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13040 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 diff --git a/server.c b/server.c index 76fad71..bfc854a 100644 --- a/server.c +++ b/server.c @@ -1,6 +1,3 @@ -#pragma GCC diagnostic ignored "-Wunused-but-set-variable" -#pragma GCC diagnostic ignored "-Wunused-variable" - #include #include #include @@ -11,38 +8,42 @@ #include #include -typedef struct { +typedef struct +{ int socket; struct sockaddr_in address; } TData; -typedef struct { +typedef struct +{ float x; float y; float z; + char shoot; } TFloat; -void Error( int err ); -void* dataProcessHandler( void * data ); +void Error(int err); +void *dataProcessHandler(void *data); -int main( void ) { +int main(void) +{ int e = 0; int i = 0; - struct sockaddr_in myAddr; - int sockMain; - int port = 8080; - socklen_t addrLen; + struct sockaddr_in myAddr; + int sockMain; + int port = 8080; + socklen_t addrLen; - int sock[2]; + int sock[2]; struct sockaddr_in myAddrForClients[2]; - struct sockaddr_in clients[2]; + struct sockaddr_in clients[2]; struct sockaddr_in tmp; - myAddr.sin_family = AF_INET; - myAddr.sin_port = htons(port); - myAddr.sin_addr.s_addr = INADDR_ANY; + myAddr.sin_family = AF_INET; + myAddr.sin_port = htons(port); + myAddr.sin_addr.s_addr = INADDR_ANY; myAddrForClients[0].sin_family = AF_INET; myAddrForClients[1].sin_family = AF_INET; @@ -53,52 +54,58 @@ int main( void ) { myAddrForClients[0].sin_addr.s_addr = INADDR_ANY; myAddrForClients[1].sin_addr.s_addr = INADDR_ANY; - for( i = 0; i < 2; i ++ ) { - if( (sock[i] = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) { - Error( e++ ); + for (i = 0; i < 2; i++) + { + if ((sock[i] = socket(AF_INET, SOCK_DGRAM, 0)) < 0) + { + Error(e++); return -1; } - while( bind( sock[i], (struct sockaddr*)&myAddrForClients[i], sizeof( struct sockaddr_in) ) < 0 ) { + while (bind(sock[i], (struct sockaddr *)&myAddrForClients[i], sizeof(struct sockaddr_in)) < 0) + { myAddrForClients[i].sin_port = htons(ntohs(myAddrForClients[i].sin_port) + 1); } } - if( (sockMain = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) { - Error( e++ ); + if ((sockMain = socket(AF_INET, SOCK_DGRAM, 0)) < 0) + { + Error(e++); return -1; } - if( bind( sockMain, (struct sockaddr*)&myAddr, sizeof(struct sockaddr_in) ) < 0 ) { - Error( e++ ); - return -1; - } + if (bind(sockMain, (struct sockaddr *)&myAddr, sizeof(struct sockaddr_in)) < 0) + { + Error(e++); + return -1; + } + addrLen = sizeof(struct sockaddr_in); - - addrLen = sizeof( struct sockaddr_in ); - - int flag = 2; - int recvLen, sendLen; + int flag = 2; + int recvLen, sendLen; char buf[5]; - memset( buf, 0 , sizeof(buf)); + memset(buf, 0, sizeof(buf)); - while( flag ) { - recvLen = recvfrom( sockMain, buf, 5, 0, (struct sockaddr*)&tmp, &addrLen ); + while (flag) + { + recvLen = recvfrom(sockMain, buf, 5, 0, (struct sockaddr *)&tmp, &addrLen); - if( buf[0] != 'U' || buf[1] != 'N' || buf[2] != 'I' || buf[3] != 'T' || buf[4] != 'Y' ) { - Error( e++ ); + if (buf[0] != 'U' || buf[1] != 'N' || buf[2] != 'I' || buf[3] != 'T' || buf[4] != 'Y') + { + Error(e++); return -1; } - clients[2-flag--] = tmp; - } + clients[2 - flag--] = tmp; + } - for( i = 0; i < (sizeof(myAddrForClients) / sizeof(myAddrForClients[0])); i++ ) { + for (i = 0; i < (sizeof(myAddrForClients) / sizeof(myAddrForClients[0])); i++) + { char port2char[8]; - sprintf(port2char, "%d\r\n", ntohs(myAddrForClients[i].sin_port) ); - sendLen = sendto(sockMain, port2char, sizeof(port2char), 0, (struct sockaddr*)&clients[i], sizeof( clients[i]) ); + sprintf(port2char, "%d\r\n", ntohs(myAddrForClients[i].sin_port)); + sendLen = sendto(sockMain, port2char, sizeof(port2char), 0, (struct sockaddr *)&clients[i], sizeof(clients[i])); } //Unity's got port number to connect @@ -108,23 +115,28 @@ int main( void ) { pthread_t handlers[2]; TData data[2]; - int size = ( sizeof(handlers) / sizeof(handlers[0]) ); + int size = (sizeof(handlers) / sizeof(handlers[0])); - for( i = 0; i < size; i++ ) { + for (i = 0; i < size; i++) + { data[i].socket = sock[i]; - data[i].address = clients[size-1-i]; + data[i].address = clients[size - 1 - i]; } - for( i = 0; i < size; i++ ) { - if( pthread_create(&handlers[i], NULL, dataProcessHandler, &data[i] ) ) { - Error( e++ ); + for (i = 0; i < size; i++) + { + if (pthread_create(&handlers[i], NULL, dataProcessHandler, &data[i])) + { + Error(e++); return -1; } } - for( i = 0; i < size; i++ ) { - if( pthread_join( handlers[i], NULL )) { - Error( e++ ); + for (i = 0; i < size; i++) + { + if (pthread_join(handlers[i], NULL)) + { + Error(e++); return -1; } } @@ -133,30 +145,33 @@ int main( void ) { close(sock[0]); close(sock[1]); - return 0; + return 0; } -void* dataProcessHandler( void * data ) { +void *dataProcessHandler(void *data) +{ - TData *info = (TData*)data; + TData *info = (TData *)data; TFloat floats; - memset(&floats,0,sizeof(floats)); + memset(&floats, 0, sizeof(floats)); struct sockaddr_in tmp; socklen_t addrLen; printf("HANDLER STARTED..\n"); - printf("LOOKING AT SOCKET: %d, ON PORT: %d\n", info->socket, ntohs(info->address.sin_port) ); + printf("LOOKING AT SOCKET: %d, ON PORT: %d\n", info->socket, ntohs(info->address.sin_port)); - while( 1 ) { - if( recvfrom( info->socket, &floats, 12, 0, (struct sockaddr*)&tmp, &addrLen) != 12 ) continue; - sendto( info->socket, &floats, 12, 0, (struct sockaddr*)&info->address, sizeof(info->address)); + while (1) + { + if (recvfrom(info->socket, &floats, 13, 0, (struct sockaddr *)&tmp, &addrLen) != 13) + continue; + sendto(info->socket, &floats, 13, 0, (struct sockaddr *)&info->address, sizeof(info->address)); } return NULL; } -void Error( int err ) { - printf("Error! Code: %d\n", err); +void Error(int err) +{ + printf("Error! Code: %d\n", err); } -