[twsocket] OnDataSent event and related questions

2008-05-13 Thread info2004
Hi,

I am currently using the OnDataSent event of TWSocket to signal my state 
machine 
to move on. This is working mostly, however, sometimes, the event does not 
happen.

Now, at the far side, the server being connected to closes the connection when 
it has it's data, so I am thinking that this close will sometimes mask the 
OnDataSent. It is happening about 1 packet in 40, each packet being 60 bytes.

Some of the servers will not close the connection after a packet, and some do, 
some servers send a acknowledge packet back, so I need a reliable method of 
testing that the data has gone, before I can proceed in the state machine.

Is hooking the disconnect event a valid approach if the OnDataSent event does 
not fire?

Regards,

Andy
-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] OnDataSent event and related questions

2008-05-13 Thread Arno Garrels
info2004 wrote:
 Hi,
 
 I am currently using the OnDataSent event of TWSocket to signal my
 state machine to move on. This is working mostly, however, sometimes,
 the event does not happen. 
 
 Now, at the far side, the server being connected to closes the
 connection when 
 it has it's data, so I am thinking that this close will sometimes
 mask the OnDataSent. 

When the server closes the connection OnSessionClosed triggers. 
In order to check whether component's internal send buffer is empty
you have property BufferedByteCount.

If your application has to close the connection when all data
has been sent, you should use method ShutDown(1) from the OnDataSent
event, this makes sure the receiver will receive everything.


--
Arno Garrels [TeamICS]
http://www.overbyte.be/eng/overbyte/teamics.html




-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] OnDataSent event and related questions

2008-05-13 Thread info2004
Arno,
Arno Garrels wrote:
 info2004 wrote:
 When the server closes the connection OnSessionClosed triggers. 
 In order to check whether component's internal send buffer is empty
 you have property BufferedByteCount.
 
 If your application has to close the connection when all data
 has been sent, you should use method ShutDown(1) from the OnDataSent
 event, this makes sure the receiver will receive everything.

I think that we are at cross purposes here. The OnDataSent event looks like it 
does not fire (sometimes) if the far end (server) closes the connection. Is 
this 
true?

The server gets the data, then closes the connection, and at my sending end if 
I 
solely wait for OnDataSent, sometimes it does not happen, and I time out.

I just really want to make sure my assumption is correct before I can put this 
to bed.

Regards,

Andy
 
 
 --
 Arno Garrels [TeamICS]
 http://www.overbyte.be/eng/overbyte/teamics.html
 
 
 
 

-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be


Re: [twsocket] OnDataSent event and related questions

2008-05-13 Thread Wilfried Mestdagh
Hello Andy,

 I think that we are at cross purposes here. The OnDataSent event looks like it
 does not fire (sometimes) if the far end (server) closes the connection. Is 
 this
 true?

OnDataSent is fired when TWSocket has delivered his data to winsock. As
Arno pointed out it is not a signal that the data is arrived at the
other end.

If the other end close the connection before TWSocket has delivered the
data to Winsock then OnDataSent will of course not fire.

 The server gets the data, then closes the connection, and at my sending end 
 if I
 solely wait for OnDataSent, sometimes it does not happen, and I time out.

So the peer that receive the data will close? That's good, so you are
sure it is delivered before the connection closes. You may consider to
design a small protocol so that both end talk to each other and know all
data is sent / delivered / handled with success.

 I just really want to make sure my assumption is correct before I can put this
 to bed.

now you can :)

---
Rgds, Wilfried [TeamICS]
http://www.overbyte.be/eng/overbyte/teamics.html
http://www.mestdagh.biz


-- 
To unsubscribe or change your settings for TWSocket mailing list
please goto http://lists.elists.org/cgi-bin/mailman/listinfo/twsocket
Visit our website at http://www.overbyte.be