#include #include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { time_t currtime; int sock, nsock; fd_set rd; struct sockaddr_in my_info; struct sockaddr_in rem_info; struct timeval tv; char buff[1024], users[1024]; int size; tv.tv_sec = 0; tv.tv_usec = 500000; sock = socket(AF_INET, SOCK_STREAM, 0); my_info.sin_family = AF_INET; my_info.sin_port = htons(atoi(argv[1])); my_info.sin_addr.s_addr = INADDR_ANY; memset(&(my_info.sin_zero), 0, 8); memset(buff, 0, sizeof(buff)); memset(users, 0, sizeof(users)); bind(sock, (struct sockaddr *)&my_info, sizeof(struct sockaddr)); listen(sock, 10); size = sizeof(struct sockaddr_in); // fcntl(sock, F_SETFL, O_NONBLOCK); // FD_ZERO(&rd); // FD_SET(sock, &rd); while (1) { nsock = accept(sock, &rem_info, &size); // FD_SET(nsock, &rd); // select(nsock+1, &rd, NULL, NULL, &tv); // fcntl(nsock, F_SETFL, O_NONBLOCK); printf("Connect from %s\n", inet_ntoa(rem_info.sin_addr.s_addr)); // time(&currtime); // strcpy(buff, ctime(&currtime)); if (!fork()) { send(nsock, "Enter your name: ", 18, 0); recv(nsock, buff, sizeof(buff), 0); send(nsock, "Your name is ", 14, 0); send(nsock, buff, sizeof(buff), 0); memset(buff, 0, sizeof(buff)); } close(nsock); } }