-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathudpserver.c
56 lines (45 loc) · 1.59 KB
/
udpserver.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// Server side implementation of UDP client-server model
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include "controller.c"
#include "header.h"
#define PORT 5050
#define MAXLINE 1024
#define IPADDR "127.0.0.1"
int main() {
int server;
struct sockaddr_in servAddr, client_addr;
int client_struct_length=sizeof(client_addr);
server=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
if (server<0){
printf("Error while creating socket \n");
}
servAddr.sin_family=AF_INET;
servAddr.sin_port=htons(PORT);
servAddr.sin_addr.s_addr=inet_addr(IPADDR);
if(bind(server,(struct sockaddr *)&servAddr,sizeof(servAddr))<0){
printf("Couldnt bind to the port \n");
exit(1);
}
printf("Listening....\n \n");
// These two data types dictate what's being received and sent. Edit in header
data_incoming_type data_incoming_struct;
data_outgoing_type data_outgoing_struct;
while(1){
int bytes_received = recvfrom(server, &data_incoming_struct, sizeof(data_incoming_struct), 0,
(struct sockaddr*) &client_addr, &client_struct_length);
if (bytes_received < 0) {
perror("recvfrom failed");
continue;
}
data_outgoing_struct=main_controller(data_incoming_struct);
int bytes_sent = sendto(server, &data_outgoing_struct, sizeof(data_outgoing_struct), 0,
(struct sockaddr*) &client_addr, client_struct_length);
}
}