view C++/examples/Socket/stream-server.cpp @ 470:bc3a211c5e33

Socket: - Update examples, - Fix StreamServer, StreamClient arguments.
author David Demelier <markand@malikania.fr>
date Thu, 05 Nov 2015 09:07:34 +0100
parents 214f03b47d4e
children 5a9671dabb15
line wrap: on
line source

/*
 * stream-server -- example of stream server
 *
 * Options:
 *   - WITH_PORT (int) which port to use (default: 12000)
 *   - WITH_SSL (bool) true to use SSL (default: false)
 */

#include <iostream>

#include "Sockets.h"

#if !defined(WITH_PORT)
#  define WITH_PORT 12000
#endif

#if defined(WITH_SSL)
using Server = net::StreamServer<net::Ipv4, net::Tls>;
using Connection = net::StreamConnection<net::Ipv4, net::Tls>;
#else
using Server = net::StreamServer<net::Ipv4, net::Tcp>;
using Connection = net::StreamConnection<net::Ipv4, net::Tcp>;
#endif

int main()
{
#if defined(WITH_SSL)
	net::Tls protocol;

	protocol.setVerify(false);
	protocol.setPrivateKey("test.key");
	protocol.setCertificate("test.crt");
	protocol.setMethod(net::ssl::Tlsv1);

	Server server{std::move(protocol), net::Ipv4{"*", WITH_PORT}};
#else
	Server server{net::Tcp{}, net::Ipv4{"*", WITH_PORT}};
#endif

	server.setConnectionHandler([] (const std::shared_ptr<Connection> &client) {
		std::cout << "server: new client connected" << std::endl;
		client->send("Welcome to our server dude");
	});
	server.setReadHandler([] (const std::shared_ptr<Connection> &, const std::string &buffer) {
		std::cout << "server: received: " << buffer << std::endl;
	});
	server.setWriteHandler([] (const std::shared_ptr<Connection> &, const std::string &buffer) {
		std::cout << "server: sent: " << buffer << std::endl;
	});
	server.setDisconnectionHandler([] (const std::shared_ptr<Connection> &) {
		std::cout << "server: client disconnected" << std::endl;
	});

	while (true) {
		server.poll(-1);
	}

	return 0;
}