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 |
|
---|