📄 tcpserver.h
字号:
#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <time.h>#include <signal.h>#include <sys/wait.h>#include <sys/types.h>#include <sys/socket.h>#include <sys/utsname.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include <fcntl.h>#define bufsize 255#define namesize 20int z,sockfd;/*creat listening socket*/int tcpSocket(){ sockfd = socket(PF_INET,SOCK_STREAM,0); if(sockfd == -1){ perror("socket error"); exit(1); } return(sockfd);}/*socket set*/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); }}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); }}/*creat IPV4 address*/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);}/*void Setsaddr(){ memset(&adr_srvr,0,sizof(adr_srvr)); if(arg == 2) adr_srvr.sin_addr.s_addr = inet_addr(argv[1]); else adr_srvr.sin_addr.s_addr = inet_addr("192.168.0.21"); adr_srvr.sin_family = AF_INET; adr_srvr.sin_port = htons(9090);}*//*bind socket*/int Bind(int sockfd, const struct sockaddr *my_addr, socklen_t addrlen){ return bind(sockfd,my_addr,addrlen);}/*linsen in client*/void Listen(int sockfd){ z = listen(sockfd,5); if(z == -1){ perror("listen error"); exit(1); }}/*deal with queue*/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;}/*send message*/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;}/*incept message*/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; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -