Solved

Delphi 2009 TCP communication system

Posted on 2010-11-25
6
591 Views
Last Modified: 2012-05-10
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
Comment
Question by:aburgoyne
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 2
6 Comments
 
LVL 25

Expert Comment

by:epasquier
ID: 34215901
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
 
LVL 25

Accepted Solution

by:
epasquier earned 500 total points
ID: 34215919
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
 
LVL 25

Expert Comment

by:epasquier
ID: 34215940
defaults are a bit different for Vista / 2008
http://support.microsoft.com/kb/929851/en-us?fr=1
0
Manage your data center from practically anywhere

The KN8164V features HD resolution of 1920 x 1200, FIPS 140-2 with level 1 security standards and virtual media transmissions at twice the speed. Built for reliability, the KN series provides local console and remote over IP access, ensuring 24/7 availability to all servers.

 
LVL 25

Expert Comment

by:epasquier
ID: 34215957
Check that limitation as well :

[HKEY_LOCAL_MACHINE \System \CurrentControlSet \services \Tcpip \Parameters]
MaxFreeTWTcbs = 1000 (Default = 1000 sockets)
0
 

Author Comment

by:aburgoyne
ID: 34222714
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
 

Author Comment

by:aburgoyne
ID: 34227622
Just couldn't get sufficient connections with TCP so now looking at UDP.

Thanks anyway.

Adam
0

Featured Post

Building an interactive eFuture classroom

Watch and learn how ATEN provided a total control system solution including seamless switching matrix switch, HDBaseT extenders, PDU, lighting control to build an interactive eFuture classroom.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: rfc1180
The Maximum Segment size (MSS) is an important consideration when troubleshooting connectivity via the Internet/Intranet. As the packets are routed via the Internet/Intranet, the packets must traverse through multiple routers in the path between two…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Finds all prime numbers in a range requested and places them in a public primes() array. I've demostrated a template size of 30 (2 * 3 * 5) but larger templates can be built such 210  (2 * 3 * 5 * 7) or 2310  (2 * 3 * 5 * 7 * 11). The larger templa…
Are you ready to implement Active Directory best practices without reading 300+ pages? You're in luck. In this webinar hosted by Skyport Systems, you gain insight into Microsoft's latest comprehensive guide, with tips on the best and easiest way…

761 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question