public async Task <bool> TryPingAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) { VerifyState(State.Connected); // send ping payload to verify client and server socket are still connected try { await SendAsync(PingPayload.Create(), ioBehavior, cancellationToken).ConfigureAwait(false); var payload = await ReceiveReplyAsync(ioBehavior, cancellationToken).ConfigureAwait(false); OkPayload.Create(payload); return(true); } catch (EndOfStreamException) { } catch (IOException) { } catch (SocketException) { } VerifyState(State.Failed); return(false); }
public async Task <bool> TryPingAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) { // check if client socket is still connected // http://stackoverflow.com/questions/2661764/how-to-check-if-a-socket-is-connected-disconnected-in-c if (m_socket.Poll(1, SelectMode.SelectRead) && m_socket.Available == 0) { return(false); } // client socket is still connected, send ping payload to verify server socket is still connected try { await SendAsync(PingPayload.Create(), ioBehavior, cancellationToken).ConfigureAwait(false); var payload = await ReceiveReplyAsync(ioBehavior, cancellationToken).ConfigureAwait(false); OkPayload.Create(payload); return(true); } catch (EndOfStreamException) { } catch (SocketException) { } return(false); }
public async Task <bool> TryPingAsync(IOBehavior ioBehavior, CancellationToken cancellationToken) { await SendAsync(PingPayload.Create(), ioBehavior, cancellationToken).ConfigureAwait(false); try { var payload = await ReceiveReplyAsync(ioBehavior, cancellationToken).ConfigureAwait(false); OkPayload.Create(payload); return(true); } catch (EndOfStreamException) { } catch (SocketException) { } return(false); }