示例#1
0
文件: main.c 项目: jinzhen/TS_Server
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;
}
示例#2
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);
	}
}