t_socket *sockets_create(char* ip, int port){ t_socket* sckt = malloc( sizeof(t_socket) ); sckt->desc = socket(AF_INET, SOCK_STREAM, 0); if( !sockets_bind(sckt, ip, port) ){ free(sckt); return NULL; } sockets_setMode(sckt, SOCKETMODE_BLOCK); return sckt; }
/** * @NAME: sockets_createServer * @DESC: Inicializa un servidor. * Retorna el fileDescriptor. */ int sockets_createServer(char *addr, char *port, int backlog) { int sockfd = sockets_getSocket(); if (sockets_bind(sockfd, addr, port) == -1) { close(sockfd); return -1; } if (sockets_listen(sockfd, backlog) == -1) { close(sockfd); return -1; } return sockfd; }
t_socket *sockets_create(char* ip, int port){ t_socket* sckt = malloc( sizeof(t_socket) ); sckt->desc = socket(AF_INET, SOCK_STREAM, 0); if( !sockets_bind(sckt, ip, port) ){ free(sckt); return NULL; } int flag=1; // Re-Use Address setsockopt(sckt->desc, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof flag); // Avoid nagle problem setsockopt(sckt->desc, IPPROTO_TCP, TCP_NODELAY, &flag, sizeof(flag)); sockets_setMode(sckt, SOCKETMODE_BLOCK); return sckt; }