int server_init(t_server *srv) { if (!(srv->pe = getprotobyname("TCP"))) return (printf("Err: getproto\n")); if ((srv->fd = socket(AF_INET, SOCK_STREAM, srv->pe->p_proto)) == -1) return (printf("Err: socket\n")); srv->log = 0; srv->sin.sin_family = AF_INET; srv->sin.sin_port = htons(srv->port); srv->sin.sin_addr.s_addr = INADDR_ANY; if (bind(srv->fd, (struct sockaddr *)&srv->sin, sizeof(srv->sin)) == -1) { close(srv->fd); return (err_msg("Err: bind\n")); } if (listen(srv->fd, 42) == -1) { close(srv->fd); return (err_msg("Err: listen\n")); } if (assign_func(srv) == -1) return (-1); if (assign_func_name(srv) == -1) return (-1); if (init_response(srv) == -1) return (-1); return (0); }
int main() { t_client client; init_param(&client); to_serv(&client); assign_func(&client); while (client.s < 0) init_connection(&client); while (client.s) { set_fd(&client); if (select(client.fd_max, &(client.fd_read), &(client.fd_write), NULL, NULL) == -1) { my_printf(2, "select: %s\n", strerror(errno)); break; } check_fd(&client); } if (client.s) my_close(client.s); return (0); }