int main(int argc,char *argv[]){ int soc; char buf[1024],*ptr; socklen_t len; soc = wsock(argv[1]); char rbuf[NI_MAXHOST],sbuf[NI_MAXSERV]; char tbuf[2048]; struct sockaddr_storage from; int acc; for(;;){ len = (socklen_t)sizeof(from); if((acc = accept(soc,(struct sockaddr *)&from,&len)) < 0){ printf("accept error\n"); exit(1); }else{ socklen_t len = 0; getnameinfo((struct sockaddr *)&from,len,rbuf,sizeof(rbuf),sbuf,sizeof(sbuf),NI_NUMERICHOST | NI_NUMERICSERV); for(;;){ if(!(strcmp("quit\n",tbuf)))break; memset(&tbuf,0,sizeof(rbuf)); recv(acc,tbuf,sizeof(tbuf),0); send(acc,tbuf,sizeof(tbuf),0); //fgets(tbuf,1024,stdin); printf("%s\n",tbuf); } } } }
void start() { std::cout << "Starting..." << "\n"; StreamSocket wsock(port); while (true) { ConnectionHandler* cHandler = cHandlerFactory->getNewHandler(); StreamSocket sock = wsock.accept(); std::cout << "Incoming connection!\n"; std::thread t([&](StreamSocket sock) {cHandler->handle(sock);}, sock); t.detach(); } }
virtual int run_tcp_server(int argc, char_t **argv, char_t **env) { int err = 0; talas::protocol::tls::openssl::server_context context; talas::protocol::tls::openssl::server server(context); if ((create_context(context))) { if ((server.create())) { if ((network::os::sockets::startup())) { if ((ep_.attach(accept_port_))) { if ((sk_.open(tp_))) { if ((sk_.listen(ep_))) { network::os::socket sk; io::socket::tcp::reader rsock(sk); io::socket::tcp::writer wsock(sk); talas::protocol::tls::openssl::connection connection(rsock, wsock); if ((sk_.accept(sk, ep_))) { if ((server.accept(connection))) { respond(connection); } sk.close(); } } sk_.close(); } ep_.detach(); } network::os::sockets::cleanup(); } server.destroy(); } destroy_context(context); } return err; }
int main() { const short port = 5000; ServerSocket wsock(5000); std::cout << "Listening on port " << port << "\n\n"; //Serves a single client StreamSocket sock = wsock.accept(); string rcvd; do { rcvd = sock.receive(1024); sock.send_all(rcvd); } while (rcvd.size() > 0); std::cout << "Connection closed" << "\n"; return 0; }
virtual int run_tcp_client(int argc, char_t **argv, char_t **env) { int err = 0; talas::protocol::tls::openssl::client_context context; talas::protocol::tls::openssl::client client(context); io::socket::tcp::reader rsock(sk_); io::socket::tcp::writer wsock(sk_); talas::protocol::tls::openssl::connection connection(rsock, wsock); if ((create_context(context))) { if ((client.create())) { if ((network::os::sockets::startup())) { if ((ep_.attach(host_, port_))) { if ((sk_.open(tp_))) { if ((sk_.connect(ep_))) { if ((client.connect(connection))) { request(connection); } } sk_.close(); } ep_.detach(); } network::os::sockets::cleanup(); } client.destroy(); } destroy_context(context); } return err; }