rendered paste body// i didn't make this,a guy named sys did, i just thought it would be useful..#include <arpa/inet.h>#include <fcntl.h>#include <netinet/in.h>#include <stdio.h>#include <string.h>#include <sys/ioctl.h>#include <sys/param.h>#include <sys/socket.h>#include <sys/types.h>#include <unistd.h>#define BACKLOG 3#define BUFFSIZE 512#define MAXCONN 1024#define PORT 43594struct client{ struct client * next; struct sockaddr_in client; unsigned int sockfd; char * ip; char in[512]; char out[512]; int isActive; int id;};struct server{ int isActive;};struct client clients[MAXCONN];int getFreeId(void){ int i; for (i = 0; i < MAXCONN; i++) { if (!clients[i].sockfd) { return i; } } return -1;}int main(int argc, char * argv[]){ unsigned int sockfd; sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { fprintf(stderr, "Error creating file descriptor.\r\n"); } else { fprintf(stdout, "File descriptor created.\r\n"); } struct sockaddr_in server; memset(&server, 0, sizeof server); server.sin_family = AF_INET; server.sin_port = htons(PORT); server.sin_addr.s_addr = htonl(INADDR_ANY); int eid; eid = bind(sockfd, (struct sockaddr *) &server, sizeof server); if (eid < 0) { fprintf(stderr, "Error binding socket to local port.\r\n"); } else { fprintf(stdout, "Bound to port %d\r\n", PORT); } int flags = 1; //eid = ioctl(sockfd, FIOBIO, &flags); eid = fcntl(sockfd, F_SETFL, flags | O_NONBLOCK); if (eid < 0) { fprintf(stderr, "Error setting nonblock option.\r\n"); } else { fprintf(stdout, "Nonblocking.\r\n"); } eid = listen(sockfd, BACKLOG); if (eid < 0) { fprintf(stderr, "Error while listening.\r\n"); } else { fprintf(stdout, "Listening for connections on port %d\r\n", PORT); } int fd = 0; while (1) { char buffer[512]; if (!clients[fd].sockfd) { //fprintf(stderr, "No such descriptor %d.\r\n", fd); } else { eid = recv(clients[fd].sockfd, clients[fd].in, sizeof clients[fd].in, 0); } if (eid <= 0) { //fprintf(stderr, "Error reading from %d.\r\n", fd); } else { fprintf(stdout, "%s\r\n", clients[fd].in); } struct sockaddr_in client; unsigned int len; len = sizeof client; eid = accept(sockfd, (struct sockaddr *) &client, &len); if (eid < 0) { //fprintf(stderr, "Error accepting connection.\r\n"); } else { int id; id = getFreeId(); if (id < 0) { fprintf(stderr, "Unable to accept connection, maximum clients of %d reached.\r\n", MAXCONN); sprintf(buffer, "Unable to accept connection, maximum clients of %d reached.\r\n", MAXCONN); send(eid, buffer, strlen(buffer), 0); close(eid); } else { clients[id].sockfd = eid; struct sockaddr_in addr; len = sizeof addr; eid = getpeername(eid, (struct sockaddr *) &addr, &len); if (eid < 0) { fprintf(stderr, "Error obtaining remote address.\r\n"); } else { clients[id].ip = inet_ntoa(client.sin_addr); fprintf(stdout, "Connection accepted from %s.\r\n", clients[id].ip); } //close(eid); } } fd = (fd + 1) % MAXCONN; } return 0;}