Hello,

Thank you for the reply. I will try and enable it and get back to you.

Regards
Vikas 

-----Original Message-----
From: ext Kacheong Poon [mailto:[email protected]] 
Sent: Monday, February 23, 2009 9:41 AM
To: Mr, Vikas (NSN - IN/Bangalore)
Cc: [email protected]
Subject: Re: [networking-discuss] TCP related query

VIKAS MR wrote:

> I had a TCP related question. I wrote a simple TCP based server
(infinite loop) on Solaris 10 u5 which sleeps for 1 sec before reading
data. Then I wrote a simple client which which sends data continuously,
I found that after sending some data my client was getting blocked as it
could not send more data. I used "snoop" to discover that the server
side TCP had sent "WIN=0". Then I exited the client by using "CTRL +C".


Because your reader is slow (sleeping), hence the TCP receive window is
closed to stop the sender from sending more.


> Question
> We all know that if the client exits then it should trigger close and
flush buffer's. But the connection was still in "ESTABLISHED" state. And
after few seconds the data transmission continued even without the
client program being alive. Why ?
> So does it mean that even if my program exits the data will be sent ?


Since it is a graceful shutdown (ctrl-C kills the process and the socket
will be close()), TCP will keep on trying to send the buffered data.  So
yes, even if your program exits, the buffered data will still be sent.
If you don't want this, you can enable the SO_LINGER socket option with
a 0 time.  Then when the socket is close(), it will do an abortive
shutdown.



-- 

                                                K. Poon.
                                                [email protected]

_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to