Socket Server breaks after 1000 client requests
I wrote C++ Socket class. This class wraps methods both for client and server,
so you can create server or client depending what methods you call.
Anyway, all in all, problem is:
I have 3 small programs. One is server that listens in loop on port 30000.
Second is client program that sends one message to the server.
The third one on is small program (called spawn) that forks and executes client program in limited for loop. So , idea is to simulate a lot of connections to the server and see how many he can handle and how.
So, at first I start server, execute spawn, and server gets client messages. First I try 10 clients, then 100, then 1000 and it worked :) Then I tried 10000 clients, and then it breaks just above 1000 clients, plus minus 100 !! So then I tried to put in server code 5 threads and mutex, but the result is same around 1000 clients and breaks. Then I put semaphore, but then i realized that in this scenario semaphores are of no use, because you can not sync with random client events.
I also tried to change value in listen() method, but then I read somewhere that maximum is 5 connections, which is default.
Does this problem requires some change in kernel code, or tcp/ip stack, or the solution is simple, like reset server when it has first break. I tried this last solution, but nothing happens.
So , does anyone have any idea?
Please help, I am working on this for days :)