Re: TCP server stop receiving new connections



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.

.



Relevant Pages

  • Re: RealVNC
    ... I recently upgraded a client to SBS 2003 Premium with ISA. ... This server was so full of trojans, spyware, ... the vendor complained because I would not let pcAnywhere ... Then there is default Java listening port on port 5800 on the ...
    (microsoft.public.windows.server.sbs)
  • Re: RealVNC
    ... Default listening port for RealVNC server that runs on the machine on which ... Then there is default Java listening port on port 5800 on the client machine ...
    (microsoft.public.windows.server.sbs)
  • Re: Network intermittently dropping the connection to shared files on server
    ... what we were using with our SBS2000 server with no problems. ... It's a small Server plus 4 Client W/S set up in one office. ... All users that have current connections to the shared files are ... We have a small network < 5 clients connected to a new Dell ...
    (microsoft.public.windows.server.sbs)
  • Re: RealVNC
    ... I use VNC behind server ... Default listening port for RealVNC server that runs on the machine ... And then "other"party - not the client can run RealVNC Viewer in ...
    (microsoft.public.windows.server.sbs)
  • Re: RealVNC
    ... I use VNC behind server ... Then there is default Java listening port on port 5800 on the client ...
    (microsoft.public.windows.server.sbs)

Loading