📄 server.cc
字号:
/* $Id: Server.cc,v 1.3 2000/10/01 17:00:42 pure Exp $ */#include "Server.h"#include <unistd.h>#include <sys/socket.h>#include <netinet/in.h>#include <netdb.h>#include <arpa/inet.h>#include <sys/time.h>UnixServer::UnixServer(char* hostname, int port){ struct hostent* host; host = gethostbyname(hostname); if (!host) throw; struct sockaddr_in sa; sa.sin_family = AF_INET; sa.sin_port = htons(port); sa.sin_addr = *(struct in_addr *) host->h_addr; sock = socket(PF_INET, SOCK_STREAM, 0); if (sock < 0) throw; char tmp; tmp=1; setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (char*)&tmp, sizeof(tmp)); tmp=1; setsockopt(sock, SOL_SOCKET, SO_KEEPALIVE, (char*)&tmp, sizeof(tmp)); if (bind(sock, (struct sockaddr *)&sa, sizeof(sa)) < 0) throw; if (listen(sock, 1) < 0) throw; filedes = -1;}void UnixServer::accept(){ struct sockaddr_in sa; socklen_t size = sizeof(sa); filedes = ::accept(sock, (struct sockaddr *) &sa, &size); if (filedes < 0) throw;}UnixServer::~UnixServer(){ if (filedes >= 0) { shutdown(filedes, SHUT_RDWR); close(filedes); } close(sock);}Server::Server(char* hostname, int port) :UnixServer(hostname, port),istream(&buf),ostream(&buf){}Server::~Server(){}int Server::fd(){ return filedes;}void Server::accept(){ UnixServer::accept(); buf.attach(filedes);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -