Re: TCP server stop receiving new connections
- From: Julián Rodríguez Bajo <julian.rodriguez@xxxxxxxxxx>
- Date: Tue, 10 Jul 2007 10:34:43 +0200
Ali escribió:
On Jul 9, 1:06 am, Julián Rodríguez Bajo <julian.rodrig...@xxxxxxxxxx>
wrote:
Hi folks.
I have a strange problem in my class library used by all our client and
server applications.
There are servers listening on different ports for different purposes.
Sometimes (when a lot of new clients try to connect to the same server),
one of the servers (not allways the same one) stops accepting new
incomming connections, but keeps current connections. Server port
appears as LISTENING, but OnAccept never arrives to server. New client
connections receive a WSAECONNREFUSED error. In this situation, if I
call Accept directly in a test application, one incomming connection is
accepted, but no messages can be sent cliet -> server nor server ->
client, and after 15 seconds connection is dropped because of a custom
keep alive mechanism. Running server and a lot of client applications in
same machine fails the same way.
Both client and server processes use the same class library. The library
is a statically linked MFC based static library. Both classes, server
and client, derive from CAsyncSocket. There are no threads involved.
I have tried changing nConnectionBacklog parameter to Listen, but that
does not seems to make any effect.
Any suggestion would be apreciated.
Best regards.
--snip--Both classes, server and client, derive from CAsyncSocket. There are no threads involved.
If you are not using threads fro non-blocked sockets then how you
honour the requests from multiple clients?
ali
When a CAsyncSocket derived socket is created, by default a WSAAsyncSelect is called with FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE event notification mask. Every socket notification is received in an WM_SOCKET_NOTIFY message. MFC dispatches every socket notification to the corresponding virtual method of the CAsyncSocket object:
* FD_READ --> Calls OnReceive function.
* FD_WRITE --> Calls OnSend function.
* FD_OOB --> Calls OnOutOfBandData function.
* FD_ACCEPT --> Calls OnAccept function.
* FD_CONNECT --> Calls OnConnect function.
* FD_CLOSE --> Calls OnClose function.
So, there is no need to use multiple threads to serve multiple clients.
.
- Follow-Ups:
- References:
- TCP server stop receiving new connections
- From: Julián Rodríguez Bajo
- Re: TCP server stop receiving new connections
- From: Ali
- TCP server stop receiving new connections
- Prev by Date: Re: TCP server stop receiving new connections
- Next by Date: Re: Reliability of reverse lookup with getnameinfo
- Previous by thread: Re: TCP server stop receiving new connections
- Next by thread: Re: TCP server stop receiving new connections
- Index(es):
Relevant Pages
|
Loading