int main (int argc, const char *argv[]) { int fd; unsigned short port; port = TS_PORT; char *addr = TS_SERVER_ADDRESS; pid_t child_pid; //step 1: fd = get_sock_fd (); struct sockaddr_in my_addr; memset (&my_addr, 0, sizeof (my_addr)); //step 2: bind_addr (fd, addr, port, &my_addr); //step 3: server_listen (fd, BACKLOG); //step 4: int new_fd; struct sockaddr_in new_addr; memset (&new_addr, 0, sizeof (new_addr)); socklen_t new_addr_len = 1; signal(SIGCHLD, sig_chld); signal(SIGINT, sig_int); while (1) { if ((new_fd = accept (fd, (struct sockaddr *) &new_addr, &new_addr_len)) == -1) { if (errno == EINTR) { continue; }else { perror ("accept error"); close (fd); } } else { if ((child_pid = fork()) == 0) { close(fd); server_client (new_fd); exit(0); } close(new_fd); } } return 0; }
void telnet_thread(void *arg) { struct netconn *conn, *newconn; struct ip_addr l_ip; IP4_ADDR(&l_ip, 192,168,1,2); /* Create a new connection identifier. */ conn = netconn_new(NETCONN_TCP); /* Bind connection to well known port number 7. */ netconn_bind(conn, &l_ip, 23); /* Tell connection to go into listening mode. */ netconn_listen(conn); while(1) { newconn = netconn_accept(conn); server_client(newconn); } }