Hallo Leute,
ich wollte keep alive für meine tcp Verbindung einstellen. Mein Code
sieht wie folgt aus:
1 | #include <string.h>
|
2 | #include <errno.h>
|
3 | #include <sys/types.h>
|
4 | #include <sys/socket.h>
|
5 | #include <netinet/in.h>
|
6 | #include <netinet/ip.h>
|
7 | #include <netinet/tcp.h>
|
8 | #include <netdb.h>
|
9 | #include <arpa/inet.h>
|
10 | #include <unistd.h>
|
11 |
|
12 | int server_sock;
|
13 | int opt;
|
14 | server_sock = socket(AF_INET, SOCK_STREAM, 0);
|
15 |
|
16 | opt = 1;
|
17 | setsockopt(server_sock, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));
|
18 |
|
19 | setsockopt(server_sock, SOL_SOCKET, SO_KEEPALIVE, &opt, sizeof(opt);
|
20 |
|
21 | opt = 4;
|
22 | setsockopt(server_sock, IPPROTO_TCP, TCP_KEEPIDLE, &opt, sizeof(opt);
|
23 |
|
24 | opt = 4;
|
25 | setsockopt(server_sock, IPPROTO_TCP, TCP_KEEPINTVL, &opt, sizeof(opt);
|
26 |
|
27 | opt = 1;
|
28 | setsockopt(server_sock, IPPROTO_TCP, TCP_KEEPCNT, &opt, sizeof(opt);
|
Wenn ich das Programm kompiliere, bekomme ich folgenden Meldungen:
error: `TCP_KEEPIDLE' undeclared (first use in this function)
error: `TCP_KEEPINTVL' undeclared (first use in this function)
error: `TCP_KEEPCNT' undeclared (first use in this function)
könntet ihr mir sagen wo ich falsch mache? Ich danke euch schon mal.
p/s ich benutze Cygwin zu kompilieren.
Grüße,
B.Tsuko