> 2. Even though I use local messages to start and stop the connections, the > Client application will not process any other messages unless I call > Application.Processmessages, which I call in the OnSessionConnected event.
That is probably your problem. NEVER call ProcessMessages or any other form of the message pump from an event handler. You'll have events re-entered and this is generally very bad (even with a simple TButton !). btw: Use TWSocketServer for your server program. It already has most of what you need, for example ClientCount. -- [EMAIL PROTECTED] The author of the freeware multi-tier middleware MidWare The author of the freeware Internet Component Suite (ICS) http://www.overbyte.be ----- Original Message ----- From: "Hoby Smith" <[EMAIL PROTECTED]> To: <[email protected]> Sent: Saturday, August 25, 2007 3:04 PM Subject: [twsocket] Problems writing tester with connection counts > Hello... > > I am really stumped. I am attempting to write some testing applications > that will test the performance of some TCP/IP transport components that I > have written. My components use TWSocket components for the TCP/IP > interface and implement an encrypted, packetizing stream over TCP/IP. > > The test is real simple. I am just trying to see how many connections per > second I can make with the components. The problem is that the server and > the client report different results for the number of connections and I > CAN > NOT figure out why?!?!?! I think the problem is my approach to writing > the > test applications, but I can't figure what where the problem is?!?!? > > Basically, there are two testing applications, one is a server and one is > client. The test is just to see how many connections (sessions) can be > generated during a given period, e.g. per second. The test is really > simple, actually, which is what is stumping me. > > The Server works this way: > 1. The server starts and immediately enters listening on a port. > 2. Whenever the server receives a client connection, I increment a connect > count. I do this in the Server's OnClientConnect event. > 3. Whenever the server receives a client disconnect, I increment a > disconnect count. I do this in the Server's OnClientDisconnect event. > > That is it for the server, other than a few minor functions, like letting > the user manually clear the counts via a button on the form. > > The Client works this way: > 1. The user sets a few controls (length of test, port, etc). > 2. The user starts the start via a button. > 3. A test flag is set and a system timer is started. > 4. The Client initiates a connection to the server. > 5. When the client gets a connection, I increment a connect counter and > close the connection. I do this in the OnSessionConnected event. I close > the connection by posting a message to my main form, which in turn closes > the connection. This way, I don't close the connection from the Client > Socket's message handler. > 6. In the Client's OnSessionClosed event, I check to see if the test has > finished. The test is finished when the timer has fired and a flag is > cleared. If it has not finished, then I initiate another connection to > the > server. I do this by posting a message to the main form, which in turn > starts the connection, so that I don't start the connection it in the > Client > Socket's message handler. > > There are two problems with this: > > 1. The count of connections on the server and the count of connections on > the client will sometimes be off by a few. Not always, but most of the > time. The first test will usually be same, say 128 on both ends. But, > subsequent tests will be off by two or three, like server = 131 and client > = > 129. I do not understand this. Is this just an inherent problem with > windows socket messages and how I have implemented the test? Perhaps, > there > are pending messages in the socket que that haven't been processed or > something? I am concerned that I am missing an event or something. > > 2. Even though I use local messages to start and stop the connections, the > Client application will not process any other messages unless I call > Application.Processmessages, which I call in the OnSessionConnected event. > If I do not call ProcessMessages, the timer event never fires and the test > just runs forever or until I close the Server, then the Client application > processes messages and stops the test. If I am doing the connects and > disconnects using posted messages to the form, then why don't other > messages > get processed as well? Why is it looping in the TWSocket event handlers > only? That is rather odd. > > I hope this makes sense. Is there a better way to implement this test? > Do > I just not understand the windows socket message handling enough to > understand why this isn't working? > > I am tempted to just ignore the difference in counts, but I am concerned > that there is an underlying flaw in how I am using the TWSocket components > and I am concerned that I have a bug that I am not aware of in my > components. > > Any input would be appreciated. Thanks much. > > Hoby > > -- > To unsubscribe or change your settings for TWSocket mailing list > please goto http://www.elists.org/mailman/listinfo/twsocket > Visit our website at http://www.overbyte.be -- To unsubscribe or change your settings for TWSocket mailing list please goto http://www.elists.org/mailman/listinfo/twsocket Visit our website at http://www.overbyte.be
