www.pudn.com > socketonLinux.zip > server.h
#include#include #include #include #include #include #include #include #include #include #include #define bufsize 255 #define namesize 20 int tcpSocket() { int n; if ( (n = socket(PF_INET,SOCK_STREAM,0))==-1) { perror("TCP Socket error"); exit(1); } return(n); } void Setsockopt(int s) { int on = 1; struct linger linger = { 0 }; linger.l_onoff = 1; linger.l_linger = 30; if ( setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (const char *) &on, sizeof(on))==-1) { perror("Setsockopt(...,SO_REUSEADDR,...)"); exit(1); } if ( setsockopt(s, SOL_SOCKET, SO_LINGER, (const char *) &linger, sizeof(linger))==-1) { perror("Setsockopt(...,SO_LINGER,...)"); exit(1); } } int Bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen) { return bind(sockfd,my_addr,addrlen); } void Listen(int s) { if (-1 == listen(s,5)) { perror("Listen()"); exit(1); } } int Accept(int s, struct sockaddr *addr, socklen_t *addrlen) { int newSocket; if ((newSocket=accept(s, addr, addrlen))==-1) { perror("Accept()"); exit(1); } return newSocket; } void Connect(int sockfd, const struct sockaddr *sock_addr) { if (-1 == connect(sockfd, sock_addr, sizeof(*sock_addr))) { printf("Server haven't started\n"); exit(1); } } void GetHostName(char *buffer, int length) { struct utsname sysname = { 0 }; int status = 0; status = uname(&sysname); if (-1 != status) { strncpy(buffer, sysname.nodename, length); } else { perror("GetHostName()"); exit(1); } } void CreateSockAddr(const char *hostname,struct sockaddr_in *sockaddress,int port) { struct hostent *host = NULL; host = gethostbyname(hostname); if (NULL == host) { host = gethostbyaddr(hostname, strlen(hostname), AF_INET); if (NULL == host) { perror("Error resolving server address"); exit(1); } } (void) memset(sockaddress, 0, sizeof(sockaddress)); (void) memcpy(&((*sockaddress).sin_addr), host->h_addr, host->h_length); sockaddress->sin_addr.s_addr=htonl(INADDR_ANY); sockaddress->sin_family = AF_INET; sockaddress->sin_port = htons(port); } ssize_t Send(int s, const void *buf) { ssize_t sendn; if( -1==(sendn=send(s, buf, strlen(buf), 0))) { perror("Send()"); close(s); } return sendn; } ssize_t Recv(int s, void *buf) { ssize_t recvn; if( -1==(recvn= recv(s, buf, bufsize, 0))) { perror("Recv()"); close(s); } return recvn; } char *Fgets(char *s) { bzero(s,bufsize); if(fgets(s,bufsize,stdin)==NULL) { perror("Fgets()"); exit(1); } return s; } void Rtrim(char *buf) { int i; for(i=0;i<255;i++) { if(buf[i]=='\n') { buf[i]=0; break; } } }