+ Server* server = NULL;
+ try {
+ // Crea el server (empieza a escuchar).
+ server = new Server(filename, port);
+ } catch (const sockerr& e) {
+ cerr << "Socket Error: " << e.operation() << " | serrno = "
+ << e.serrno() << " | errstr = " << e.errstr() << endl;
+ if (e.io()) {
+ cerr << "Es: non-blocking and interrupt io recoverable error."
+ << endl;
+ } else if (e.arg()) {
+ cerr << "Es: incorrect argument supplied. recoverable error."
+ << endl;
+ } else if (e.op()) {
+ cerr << "Es: operational error. recovery difficult." << endl;
+ } else if (e.conn()) {
+ cerr << "Es: connection error." << endl;
+ } else if (e.addr()) {
+ cerr << "Es: address error." << endl;
+ } else if (e.benign()) {
+ cerr << "Es: recoverable read/write error like EINTR etc." << endl;
+ }
+ return e.serrno();
+ } catch (const exception& e) {
+ cerr << "Error: " << e.what() << endl;
+ return 1;
+ } catch (const char* e) {
+ cerr << "Error: " << e << endl;
+ return 2;
+ } catch (...) {
+ cerr << "Error desconocido!" << endl;
+ return 3;
+ }
+
+ // Conecto señal para atender errores.
+ server->signal_error().connect(SigC::slot(on_error));
+