comparison modules/net/examples/blocking-accept.cpp @ 524:554d130f45ee

Net: resurrection
author David Demelier <markand@malikania.fr>
date Wed, 01 Jun 2016 17:11:45 +0200
parents 0002b8da93dc
children
comparison
equal deleted inserted replaced
523:d7d434ab9114 524:554d130f45ee
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 master.accept(client);
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