45 lines
1.0 KiB
C
45 lines
1.0 KiB
C
|
#include "handle_communication.h";
|
||
|
#include "../common.h";
|
||
|
#include <string.h>
|
||
|
#include <netinet/in.h>
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/socket.h>
|
||
|
#include <arpa/inet.h>
|
||
|
#include <netdb.h>
|
||
|
|
||
|
void handle_communication(void *player_data)
|
||
|
{
|
||
|
|
||
|
communicationData *playerData = (communicationData *)player_data;
|
||
|
|
||
|
struct sockaddr_in client_address;
|
||
|
socklen_t c_addrlen = sizeof(client_address);
|
||
|
|
||
|
//Receive data from the client
|
||
|
int Socket_receive = recvfrom(
|
||
|
playerData->Socket,
|
||
|
&playerData->position, sizeof(playerPosition),
|
||
|
0,
|
||
|
(const struct sockaddr *)&client_address,
|
||
|
c_addrlen);
|
||
|
|
||
|
if(Socket_receive < 0) {
|
||
|
printf("Error while receiving a package\n");
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
//Send updated position back
|
||
|
int Socket_send = sendto(
|
||
|
playerData->Socket,
|
||
|
&playerData->position,
|
||
|
sizeof(playerPosition),
|
||
|
0,
|
||
|
(const struct sockaddr *)&client_address,
|
||
|
c_addrlen);
|
||
|
|
||
|
if(Socket_send < 0) {
|
||
|
printf("Error while sending a package\n");
|
||
|
return;
|
||
|
}
|
||
|
}
|