-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.cpp
More file actions
78 lines (69 loc) · 1.71 KB
/
Copy pathserver.cpp
File metadata and controls
78 lines (69 loc) · 1.71 KB
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include "UnoTransport.hpp"
#include <cstring>
#include <stdio.h>
#include <inttypes.h>
#include <assert.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <cstdlib>
#include <ctime>
#define PORT 13002
#define BUFFER_SIZE 5000
void print_buffer (uint8_t *buffer, int size)
{
if(size <= 0) {
printf("err\n");
perror("recvfrom");
return;
}
int i;
for(i=0; i<size; i++) {
printf("%02" PRIX8 " ", buffer[i]);
}
printf("\n");
}
bool should_close (void)
{
// int random = rand() % 100;
// if(random < 10) {
// return true;
// }
// else {
// return false;
// }
return false;
}
int main (void)
{
srand(time(NULL));
UnoTransportServer server(PORT);
struct sockaddr_in src;
printf("server pid = %ld\n", (long)getpid());
bool is_spl = false;
uint8_t buffer[5000] = {0,};
int bytes;
while(1) {
memset (&src, 0, sizeof(src));
//bytes = server.recv_msg (buffer, sizeof(buffer), UNO_TRANSPORT_TIMEOUT_INFINITE);
//bytes = server.listen (src);
bytes = server.recv_msg (buffer, sizeof(buffer), &src, is_spl);
if(is_spl) {
printf("spl msg: ");
}
else {
printf("regular msg: ");
}
printf("bytes = %d msg = %s\n", bytes, buffer);
// print_buffer (buffer, bytes);
//sendto (server.fd, buffer, bytes, 0, (struct sockaddr*)&src, len);
if(should_close()) {
printf("sending explicit close conn\n");
server.close_connection (src);
}
else {
server.send_msg_reliable (buffer, bytes, src);
}
memset (buffer, 0, bytes);
}
return 0;
}