server.cc

来自「AVR 单片机程序设计用到的模拟器」· CC 代码 · 共 81 行

CC
81
字号
/* $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 + =
减小字号Ctrl + -
显示快捷键?