1 | #include <stdio.h> |
---|
2 | #include <pjlib.h> |
---|
3 | |
---|
4 | #define CHECK(status) pj_assert(status==PJ_SUCCESS); if (status!=PJ_SUCCESS) return 1 |
---|
5 | |
---|
6 | int process(pj_sock_t sock, char buf[], pj_ssize_t size, const void *addr, int addrlen) |
---|
7 | { |
---|
8 | puts("Got packet"); |
---|
9 | return 0; |
---|
10 | } |
---|
11 | |
---|
12 | int main() |
---|
13 | { |
---|
14 | pj_status_t status; |
---|
15 | pj_sockaddr_in addr; |
---|
16 | pj_sock_t sock; |
---|
17 | |
---|
18 | status = pj_init(); |
---|
19 | CHECK(status); |
---|
20 | |
---|
21 | status = pj_sock_socket(pj_AF_INET(), pj_SOCK_DGRAM(), 0, &sock); |
---|
22 | CHECK(status); |
---|
23 | |
---|
24 | pj_sockaddr_in_init(&addr, NULL, 5060); |
---|
25 | status = pj_sock_bind(sock, &addr, sizeof(addr)); |
---|
26 | CHECK(status); |
---|
27 | |
---|
28 | for (;;) { |
---|
29 | char buf[4000]; |
---|
30 | int addrlen; |
---|
31 | pj_ssize_t size; |
---|
32 | |
---|
33 | addrlen = sizeof(addr); |
---|
34 | size = sizeof(buf); |
---|
35 | status = pj_sock_recvfrom(sock, buf, &size, 0, &addr, &addrlen); |
---|
36 | if (status != PJ_SUCCESS) |
---|
37 | continue; |
---|
38 | |
---|
39 | process(sock, buf, size, &addr, addrlen); |
---|
40 | } |
---|
41 | } |
---|
42 | |
---|