Re: Socket Disconnect
From: Paul G. Tobey [eMVP] (ptobey)
Date: 08/31/04
- Next message: Paul G. Tobey [eMVP]: "Re: IP release & renew"
- Previous message: Just Me: "Re: SharpZipLib question ..."
- In reply to: MDB: "Re: Socket Disconnect"
- Next in thread: MDB: "Re: Socket Disconnect"
- Reply: MDB: "Re: Socket Disconnect"
- Messages sorted by: [ date ] [ thread ]
Date: Tue, 31 Aug 2004 09:04:34 -0700
g_socClient.SetSocketOption( Socket, KeepAlive, 1 ), is what I'd try. It
would help if you'd say what you did, when things don't work, as well as
telling us what error occurred.
Paul T.
"MDB" <nospam> wrote in message
news:%23F0HID3jEHA.384@TK2MSFTNGP10.phx.gbl...
> First thanks for your reply however, how do you set the SetSocketOption
> using the compactframework? I have tried several different ways only to
> receive errors when the code is ran (not when compiled).
>
>
>
> "Paul G. Tobey [eMVP]" <ptobey no spam AT no instrument no spam DOT com>
> wrote in message news:%23VvG762jEHA.1904@TK2MSFTNGP09.phx.gbl...
>> To notice that a connection has been broken, you either have to try to
> send
>> something over the socket or you have to tell the network stack to do it
> for
>> you. That is, if you are periodically sending packets, you'll find out
>> roughly two minutes after you send the first packet after the other
>> device
>> dies that the connection is broken. In that case, the stack will detect
>> that there has been no acknowledgement. It will retry a number of times,
>> but, when all of those attempts fail, it will close the socket and you'll
>> get an error/exception.
>>
>> If you are sitting around waiting to receive packets, though, you'll
>> never
>> realize that the other end of the socket is gone, unless you tell the
> stack
>> to use keep-alive packets. When you turn that on, the network stack,
>> when
>> it detects a long period of inactivity, will periodically send a packet
>> to
>> the other end of the connection. If it replies, the stack goes back to
>> sleep. If it fails to reply, it will retry, in a certain pattern and, if
>> there is still no reply, will close the socket.
>>
>> You have to tell your sockets to use keep-alives, using the
> SetSocketOption
>> code KeepAlive.
>>
>> Note that, even if keep-alives are on, the default idle time before
> sending
>> them is 2 hours...
>>
>> Paul T.
>>
>> "MDB" <nospam> wrote in message
>> news:ui5tYo2jEHA.1404@TK2MSFTNGP09.phx.gbl...
>> > Hello All, I am using the below code to create a socket connection via
>> > wi-fi to another device. The problem is that if the device I am
>> > connecting
>> > to losing power and reboots I lose the socket connection however, my
>> > device
>> > dosn't know it was dropped and dosn't receive any type of error when it
>> > sends messages. From what I have read, CF dosn't support
> SetSocketOption
>> > so my question is does anyone know of a good way to work around this?
>> >
>> >
>> > ****SocketConnect****
>> > g_socClient = new Socket (AddressFamily.InterNetwork,SocketType.Stream
>> > ,ProtocolType.Tcp );
>> > IPAddress ip = IPAddress.Parse (strRemoteIPBase);
>> > IPEndPoint ipEnd = new IPEndPoint (ip,intTCPListenPort);
>> > g_socClient.Connect ( ipEnd );
>> >
>> > WaitForData();
>> >
>> >
>> >
>> > ****WaitForData ****
>> >
>> > if ( pfnCallBack == null )
>> > {
>> > pfnCallBack = new AsyncCallback (OnDataReceived);
>> > }
>> > CSocketPacket theSocPkt = new CSocketPacket ();
>> > theSocPkt.thisSocket = PMMobile.Classes.Globals.g_socClient;
>> >
>> > m_asynResult = g_socClient.BeginReceive (theSocPkt.dataBuffer
>> > ,0,theSocPkt.dataBuffer.Length
>> > ,SocketFlags.None,pfnCallBack,theSocPkt);
>> >
>> >
>>
>>
>
>
- Next message: Paul G. Tobey [eMVP]: "Re: IP release & renew"
- Previous message: Just Me: "Re: SharpZipLib question ..."
- In reply to: MDB: "Re: Socket Disconnect"
- Next in thread: MDB: "Re: Socket Disconnect"
- Reply: MDB: "Re: Socket Disconnect"
- Messages sorted by: [ date ] [ thread ]
Relevant Pages
|