How to limit connection in Linux socket programming?

I want to set the maximum connection. If it is more than the maximum, inform the client that the server is now full and closes the socket.

How to write code in C?

Thank.

+3
source share
2 answers

Simple The moment you call accept(), something like this:

new_conn = accept(listen_sock, &addr, addr_len);

if (new_conn > 0)
{
    if (total_connections < max_connections)
    {
        total_connections++;
        register_connection(new_conn);
    }
    else
    {
        send_reject_msg(new_conn);
        close(new_conn);
    }
}

(and, of course, decrement total_connectionsat the point where you lose connection).

+9
source

Well, you can start with this tutorial , right from my bookmarks. You can check the second argument of the function int listen(int sockfd, int backlog);.

sockfd is the usual socket file descriptor from the socket() system call. 
backlog is the number of connections allowed on the incoming queue. What 
does that mean? Well, incoming connections are going to wait in this queue 
until you accept() them (see below) and this is the limit on how many can 
queue up. Most systems silently limit this number to about 20; you can 
probably get away with settingit to 5 or 10

.

0
source

Source: https://habr.com/ru/post/1762223/


All Articles