Re: onSocketDidDisconnect in CocoaAsyncSocket
Re: onSocketDidDisconnect in CocoaAsyncSocket
- Subject: Re: onSocketDidDisconnect in CocoaAsyncSocket
- From: Bing Li <email@hidden>
- Date: Wed, 04 May 2011 11:52:27 +0800
Dear Patrick,
Thanks so much for your answer!
I don't know the details of TCP. However, TCP should be a reliable protocol.
Developers are not required to keep its connection state since TCP does
that. That's one of the important differences between TCP and UDP, right?
When using UDP, it is mandatory to keep the connection by developers
themselves. Am I right?
According to my experiences, when a TCP connection is disconnected without
calling the relevant closing method, an exception should be thrown in the
counterpart side. Do you think so? A heartbeat you mentioned should be
handled by TCP not programmers.
Best regards,
Bing
On Wed, May 4, 2011 at 2:08 AM, Patrick Mau <email@hidden> wrote:
> Hallo Bing
>
> I saw your message and thought I share my ideas. Maybe it's of some use to
> you.
>
> TCP/IP is a state machine, meaning it can only react to state changes on a
> connection.
>
> When you kill a connected client, no packet is transmitted to your server
> anymore.
> That means that it has not received a FIN packet that would indicate your
> client
> has been killed.
>
> Your server will only know about your terminated client by the time it
> reads or writes
> to the socket, because it will no longer receive an ACK for these packets.
>
> That's where timeouts come into play. If you install some kind of timer
> that would fire
> after a certain time of inactivity, your server itself should close the
> connection.
>
> It will then timeout waiting for the ACK that it is waiting for in response
> to the
> FIN packet it has tried to send.
>
> That's all based on on my BSD socket programming knowlegde, I've not used
> the CocoaAsyncSocket API myself.
>
> I hope it gives you some idea.
> Patrick
>
> On 02.Mai.2011, at 18:16, Bing Li wrote:
>
> > Dear all,
> >
> > Can anyone answer this question?
> >
> > Thanks so much!
> > Bing
> >
> > On Fri, Apr 29, 2011 at 7:21 PM, Bing Li <email@hidden> wrote:
> >
> >> Dear Michael,
> >>
> >> "Disgracefully" means the client does not close normally. It might be
> >> crashed or closed by killing the relevant thread or process. I did that
> by
> >> clicking the red Tasks button in XCode. In this situation, the
> connection
> >> must not be closed properly with the socket methods.
> >>
> >> According to my test, [AsyncSocketDelegate onSocket:
> >> willDisconnectWithError:] is not called either.
> >>
> >> I got the sample code from
> >> http://www.macresearch.org/cocoa-scientists-part-xxix-message. I am
> still
> >> a new developer. I am not sure if the code has any problems.
> >>
> >> Thanks so much for your help!
> >>
> >> Best regards,
> >> BIng
> >>
> >>
> >> On Fri, Apr 29, 2011 at 6:56 AM, Michael Dautermann <email@hidden
> >wrote:
> >>
> >>>>
> >>>> I started to use CocoaAsyncSocket to establish TCP connections among
> >>> iPads.
> >>>>
> >>>> I got a problem. According to the references (
> >>>> http://code.google.com/p/cocoaasyncsocket/wiki/Reference_AsyncSocket
> ),
> >>>> onSocketDidDisconnect would be invoked immediately if the connection
> is
> >>> not
> >>>> already disconnected. I felt confused. What does "not already
> >>> disconnected"
> >>>> mean? I think onSocketDidDisconnect should be called when a connection
> >>> is
> >>>> disconnected. The description in the reference is wrong?
> >>>>
> >>>> I implemented a server and a client using CocoaAsyncSocket. When
> closing
> >>> the
> >>>> client disgracefully, I noticed that onSocketDidDisconnect was NOT
> >>> called.
> >>>> Anything wrong with it?
> >>>
> >>> Here are some questions that might help get some further context:
> >>>
> >>> how are you closing the client "disgracefully"?
> >>>
> >>> did the companion [AsyncSocketDelegate onSocket:
> willDisconnectWithError:]
> >>> method get called?
> >>>
> >>> did you properly set your delegate and define that your object (the one
> >>> that holds your delegate methods) conforms to the delegate protocol in
> it's
> >>> .h file?
> >>>
> >>>
> >>>
> >>
> > _______________________________________________
> >
> > Cocoa-dev mailing list (email@hidden)
> >
> > Please do not post admin requests or moderator comments to the list.
> > Contact the moderators at cocoa-dev-admins(at)lists.apple.com
> >
> > Help/Unsubscribe/Update your Subscription:
> >
> >
> > This email sent to email@hidden
>
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden