Mercurial > code
comparison modules/sockets/examples/blocking-accept.cpp @ 497:8b161d143975
Socket: put back examples that were removed by mistake
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 14 Dec 2015 09:41:28 +0100 |
parents | |
children | 36e81ef34ed5 |
comparison
equal
deleted
inserted
replaced
496:3c783cf492ab | 497:8b161d143975 |
---|---|
1 /* | |
2 * blocking-accept.cpp -- example of blocking accept | |
3 * | |
4 * Options: | |
5 * - WITH_PORT (int), the port to use (default: 16000) | |
6 * - WITH_TIMEOUT (int), number of seconds before giving up (default: 60) | |
7 * - WITH_SSL (bool), true to test with SSL (default: false) | |
8 */ | |
9 | |
10 #include <iostream> | |
11 | |
12 #include "Sockets.h" | |
13 | |
14 #if !defined(WITH_PORT) | |
15 # define WITH_PORT 16000 | |
16 #endif | |
17 | |
18 #if !defined(WITH_TIMEOUT) | |
19 # define WITH_TIMEOUT 60 | |
20 #endif | |
21 | |
22 int main() | |
23 { | |
24 #if defined(WITH_SSL) | |
25 net::SocketTls<net::address::Ip> master; | |
26 net::SocketTls<net::address::Ip> client{net::Invalid}; | |
27 #else | |
28 net::SocketTcp<net::address::Ip> master; | |
29 net::SocketTcp<net::address::Ip> client{net::Invalid}; | |
30 #endif | |
31 | |
32 net::Listener<> listener; | |
33 | |
34 try { | |
35 master.set(net::option::SockReuseAddress{true}); | |
36 master.bind(net::address::Ip{"*", WITH_PORT}); | |
37 master.listen(); | |
38 | |
39 listener.set(master.handle(), net::Condition::Readable); | |
40 listener.wait(std::chrono::seconds(WITH_TIMEOUT)); | |
41 | |
42 client = master.accept(nullptr); | |
43 } catch (const net::Error &error) { | |
44 std::cerr << "error: " << error.what() << std::endl; | |
45 std::exit(1); | |
46 } | |
47 | |
48 std::cout << "Client successfully accepted!" << std::endl; | |
49 | |
50 return 0; | |
51 } | |
52 |