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 fb9d495..0000000 Binary files a/server and /dev/null differ 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); } -