int anetUnixServer(char *err, char *path) { int s; struct sockaddr_un sa; if ((s = anetCreateSocket(err,AF_LOCAL)) == ANET_ERR) return ANET_ERR; memset(&sa,0,sizeof(sa)); sa.sun_family = AF_LOCAL; strncpy(sa.sun_path,path,sizeof(sa.sun_path)-1); if (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa)) == ANET_ERR) return ANET_ERR; return s; }
int anetTcpServer(char *err, int port, char *bindaddr) { int s; int y = 1; int n = 0; struct sockaddr_in sa; if ((s = anetCreateSocket(err,AF_INET)) == ANET_ERR) return ANET_ERR; /* Override for SO_REUSEADDR for windows server socks */ if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &n, sizeof(n)) == SOCKET_ERROR) { errno = WSAGetLastError(); anetSetError(err, "setsockopt SO_REUSEADDR: %d\n", errno); return ANET_ERR; } if (setsockopt(s, SOL_SOCKET, SO_EXCLUSIVEADDRUSE, (char *) &y, sizeof(y)) == SOCKET_ERROR) { errno = WSAGetLastError(); anetSetError(err, "setsockopt SO_EXCLUSIVEADDRUSE: %d\n", errno); return ANET_ERR; } memset(&sa,0,sizeof(sa)); sa.sin_family = AF_INET; sa.sin_port = htons(port); sa.sin_addr.s_addr = htonl(INADDR_ANY); if (bindaddr) { unsigned long inAddress; inAddress = inet_addr(bindaddr); if (inAddress == INADDR_NONE || inAddress == INADDR_ANY) { anetSetError(err, "Invalid bind address\n"); aeWinSocketDetach(s, 0); closesocket((SOCKET)s); return ANET_ERR; } else { sa.sin_addr.s_addr = inAddress; }; } if (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa)) == ANET_ERR) return ANET_ERR; return s; }
int anetUnixServer(char *err, char *path, mode_t perm, int backlog) { int s; struct sockaddr_un sa; //创建socket连接 if ((s = anetCreateSocket(err,AF_LOCAL)) == ANET_ERR) return ANET_ERR; memset(&sa,0,sizeof(sa)); sa.sun_family = AF_LOCAL; strncpy(sa.sun_path,path,sizeof(sa.sun_path)-1); if (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa),backlog) == ANET_ERR) return ANET_ERR; if (perm) chmod(sa.sun_path, perm); return s; }
int kr_net_unix_server(char *err, char *path, int perm) { int s; struct sockaddr_un sa; if ((s = anetCreateSocket(err,AF_LOCAL)) == KR_NET_ERR) return KR_NET_ERR; memset(&sa,0,sizeof(sa)); sa.sun_family = AF_LOCAL; strncpy(sa.sun_path,path,sizeof(sa.sun_path)-1); if (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa)) == KR_NET_ERR) return KR_NET_ERR; if (perm) chmod(sa.sun_path, (mode_t)perm); return s; }
static int _anetTcpServer(char *err, int port, char *bindaddr, int af, int backlog) { int s, rv; char _port[6]; /* strlen("65535") */ struct addrinfo hints, *servinfo, *p; snprintf(_port,6,"%d",port); memset(&hints,0,sizeof(hints)); hints.ai_family = af; hints.ai_socktype = SOCK_STREAM; hints.ai_flags = AI_PASSIVE; /* No effect if bindaddr != NULL */ if ((rv = getaddrinfo(bindaddr,_port,&hints,&servinfo)) != 0) { anetSetError(err, "%s", gai_strerror(rv)); return ANET_ERR; } for (p = servinfo; p != NULL; p = p->ai_next) { if ((s = socket(p->ai_family,p->ai_socktype,p->ai_protocol)) == -1) { continue; } if (af == AF_INET6 && anetV6Only(err,s) == ANET_ERR) { goto error; } if (anetSetReuseAddr(err,s) == ANET_ERR) { goto error; } if (anetListen(err,s,p->ai_addr,p->ai_addrlen,backlog) == ANET_ERR) { goto error; } goto end; } if (p == NULL) { anetSetError(err, "unable to bind socket"); goto error; } error: s = ANET_ERR; end: freeaddrinfo(servinfo); return s; }
int anetTcpServer(char*err,int port,char*bindaddr,int backlog) { int s; if((s=socket(AF_INET,SOCK_STREAM,0))<0){ anetSetError(err,"create socket:%s",strerror(errno)); return ANET_ERR; } if(anetSetReuseAddr(err,s)<0){ return ANET_ERR; } struct sockaddr_in server; server.sin_family=AF_INET; server.sin_port=htons(port); server.sin_addr.s_addr=inet_addr(bindaddr); if(anetListen(err,s,(struct sockaddr*)&server,sizeof(server),backlog)<0){ return ANET_ERR; } return s; }
int anetTcpServer(char *err, int port, char *bindaddr) { int s; struct sockaddr_in sa; if ((s = anetCreateSocket(err,AF_INET)) == ANET_ERR) return ANET_ERR; memset(&sa,0,sizeof(sa)); sa.sin_family = AF_INET; sa.sin_port = htons((uint16_t)port); sa.sin_addr.s_addr = htonl(INADDR_ANY); if (bindaddr && inet_aton(bindaddr, (void*)&sa.sin_addr) == 0) { anetSetError(err, "invalid bind address"); close(s); return ANET_ERR; } if (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa)) == ANET_ERR) return ANET_ERR; return s; }
int kr_net_tcp_server(char *err, int port, char *bindaddr) { int s; struct sockaddr_in sa; if ((s = anetCreateSocket(err,AF_INET)) == KR_NET_ERR) return KR_NET_ERR; memset(&sa,0,sizeof(sa)); sa.sin_family = AF_INET; sa.sin_port = htons(port); sa.sin_addr.s_addr = htonl(INADDR_ANY); if (bindaddr && inet_aton(bindaddr, &sa.sin_addr) == 0) { kr_net_set_error(err, "invalid bind address"); close(s); return KR_NET_ERR; } if (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa)) == KR_NET_ERR) return KR_NET_ERR; return s; }
int anetUnixServer(char *err, char *path, mode_t perm) { #ifdef _WIN32 ANET_NOTUSED(err); ANET_NOTUSED(path); ANET_NOTUSED(perm); return ANET_ERR; #else int s; struct sockaddr_un sa; if ((s = anetCreateSocket(err,AF_LOCAL)) == ANET_ERR) return ANET_ERR; memset(&sa,0,sizeof(sa)); sa.sun_family = AF_LOCAL; strncpy(sa.sun_path,path,sizeof(sa.sun_path)-1); if (anetListen(err,s,(struct sockaddr*)&sa,sizeof(sa)) == ANET_ERR) return ANET_ERR; if (perm) chmod(sa.sun_path, perm); return s; #endif }