• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 601
  • Last Modified:

Delphi 2009 TCP communication system

I'm using Delphi 2009 and I'm trying to put together a kind of client and server communication system for product authentication.

Essentially, the server application will sit on a Win 2008 box and wait for clients to announce themselves.

A client sends a serial number which the server looks up in a database.

If the serial number is disabled then the server sends back a "get lost" message and closes the socket connection.

If the serial number is authenticated then the server will communicate with the client as neccessary.

I've tried a few TCP components to test the process but I'm having a similar issue with all of them - the number of concurrent connections is not sufficient.

For each "server", I've built a client capable of initiating multiple connections.  When testing locally (server and client using, the best I've managed is about 30,000 connections but testing between two Win 2003 servers in a datacenter is giving much worse results - about 5,000 connections before I start getting drop outs.

I believe that Win 2003 / 2008 should be able to support around 100,000 connections so I'm at a loss as to why I'm seeing such low numbers in testing.

If anyone has any suggestions or, better still, some example code to get beyond the limits I'm experiencing then that would would be awesome.

Thx, Adam
  • 4
  • 2
1 Solution
I'm pretty sure this is a system limitation, not a component limitation.
I mean, if you tried the 3 most common sets :
- TServerSocket (delphi old WinSock wrapper)
- ICS (Internet Component Suite)
- Indy
and they all give you the same problems, then you should not look the solution in the code, but in some registry parameter or OS documentation about CNX limitations

That is a strong limit
[HKEY_LOCAL_MACHINE \System \CurrentControlSet \Services \Tcpip \Parameters]
MaxUserPort = 5000 (Default = 5000, Max = 65534)

max cnx = MaxUserPort - 1024
so even set to 65534, that gives 64510 max connexions, whatever the system
defaults are a bit different for Vista / 2008
The 14th Annual Expert Award Winners

The results are in! Meet the top members of our 2017 Expert Awards. Congratulations to all who qualified!

Check that limitation as well :

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters]
MaxFreeTWTcbs = 1000 (Default = 1000 sockets)
aburgoyneAuthor Commented:
Hi, epasquier - thanks for the information.

I tried the registry settings suggested and it has improved things but I'm still topping out at about 16,000 connections :-(

I need to get as far above 50,000 as possible (65,000 seems to be the ceiling) so any other ideas?

rgds, Adam
aburgoyneAuthor Commented:
Just couldn't get sufficient connections with TCP so now looking at UDP.

Thanks anyway.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now