• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 605
  • 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 127.0.0.1), 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
0
aburgoyne
Asked:
aburgoyne
  • 4
  • 2
1 Solution
 
Emmanuel PASQUIERFreelance Project ManagerCommented:
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
0
 
Emmanuel PASQUIERFreelance Project ManagerCommented:
http://smallvoid.com/article/winnt-tcpip-max-limit.html

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
0
 
Emmanuel PASQUIERFreelance Project ManagerCommented:
defaults are a bit different for Vista / 2008
http://support.microsoft.com/kb/929851/en-us?fr=1
0
Cloud Class® Course: C++ 11 Fundamentals

This course will introduce you to C++ 11 and teach you about syntax fundamentals.

 
Emmanuel PASQUIERFreelance Project ManagerCommented:
Check that limitation as well :

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters]
MaxFreeTWTcbs = 1000 (Default = 1000 sockets)
0
 
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
0
 
aburgoyneAuthor Commented:
Just couldn't get sufficient connections with TCP so now looking at UDP.

Thanks anyway.

Adam
0
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

Cloud Class® Course: Amazon Web Services - Basic

Are you thinking about creating an Amazon Web Services account for your business? Not sure where to start? In this course you’ll get an overview of the history of AWS and take a tour of their user interface.

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