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
.
精彩评论