开发者

How to limit connection in Linux socket programming?

I want to set the maximum of c开发者_开发知识库onnection. If it more than the maximum, tell the client now server is full and close the socket.

How to write code in C ?

Thank you.


Simple. At the point where 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_connections at the point where you lose a connection).


Well you can start with this tutorial, right out 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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜