Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 1 Feb 2001 11:17:51 -0700
From:      "Justin Booth" <jbooth@ccbill.com>
To:        <freebsd-net@freebsd.org>
Subject:   Socket Code problem.
Message-ID:  <009901c08c7b$4f5aca30$5200000a@win2000befwze1>

next in thread | raw e-mail | index | archive | help
Hello Freebsd-net,

    The following code has a problem with it. After 16000 or so connections
the my tcp connections run out of buffer space, which does not allow me to
make any new TCP connections and the system locks up. an netstat -an
revieles that there are about 100 sockets in TIME_WAIT and an lsof -n shows
about 54000 TCP connections in TCP no PCB, CANTSENDMORE, CANTRECVMORE for
this program.  Can someone point me in the right direction for clearing this
up.



/* code snippet
#define DEAMON_PORT        2313

void main(){
        sockaddr_in     name;
        int             listen_socket;

            // Create Socket
       listen_socket = socket(PF_INET, SOCK_STREAM, TCP );
        ioctl(listen_socket, SO_REUSEADDR);
        if (listen_socket== -1 ){
                printf("Socket Failed to Create listening socket\n
exiting\n");
                exit (-1);
        } else{
                printf("Socket Created %d\n",listen_socket);
        }

        // Create socket info
        name.sin_family = PF_INET;
        name.sin_addr.s_addr = INADDR_ANY;
        name.sin_port = htons(DEAMON_PORT);

        //Bind Socket
        if ( bind(listen_socket, (struct sockaddr *) &name, sizeof(name))
== -1){
                printf("Socket could not be bound\n");
                exit(-1);
        }

       // Listen on socket
        if (listen(listen_socket, 5) == -1){
                printf("Error Listening\n");
                exit(-1);
        }

        while(1){
                sockaddr incomming;
                int     in_sock;
                int     in_length;
                int     pid;
                in_length = sizeof(incomming);
                // Accept incomming socket
                in_sock = accept(listen_socket, &incomming, &in_length);
                printf("open:%d\n",in_sock);
                if (in_sock == -1){
                        internal_log("Error Accepting\n");
                        exit(-1);
                }
                pid = fork();
                // Fork a thread
                if (pid == 0){
                        //printf("master Thread alive looping to listen\n");
                } else {
                        //Close the Socket
                        printf("close %s\n", in_sock);
                        shutdown(in_sock,2);
                        close(in_sock);
                        exit(0);
                }
        }
}


end code snippet */

Greatly Appreciated,


        Justin Booth



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?009901c08c7b$4f5aca30$5200000a>