2017-02-09 39 views
0

私はStreamSocketをWindows Universalアプリケーションで使用して、テキストベースのゲームへのTCP/IP接続を行います(ソケットは長時間開いたままです)。私はそれを接続し、データを正常に返す。私が過去に使ったほとんどのソケット実装には、プロパティや関数(またはソケットをポーリングする方法)があり、状態(オープン、クローズ、壊れている、保留中など)を取得できます。StreamSocketの接続ステータス(UWP)を取得

StreamSocketでこれを行う方法を見つけることができませんでした。

私の質問は、StreamSocket接続が落ちているかどうかを調べる方法です(エラーを出すためにパイプを送信するまで待たずに)。私の知る限りでは、しかし、あなたが書いたコードは、非常にエレガントだった

答えて

1

if (this.Socket.Status != Status.Connected)

...

if (this.Socket.Status != Status.Connected)

例えば、何かが私のような何かを行うことができますuwpによって提供されるAPIはありません。

Windows.Networking.Sockets名前空間には、ソケットとWebSocketを使用するときにエラーを処理するための便利なヘルパーメソッドと列挙型があります。これは、アプリ内で特定のネットワーク例外を異なる方法で処理する場合に便利です。

エラーがStreamSocketDatagramSocketに遭遇し、又はStreamSocketListener操作がHRESULT値として返されます。 SocketError.GetStatusメソッドは、ネットワークエラーをソケット操作からSocketErrorStatus列挙値に変換するために使用されます。 SocketErrorStatus列挙値のほとんどは、ネイティブのWindowsソケット操作によって返されたエラーに対応しています。特定のSocketErrorStatus列挙値をフィルタリングして、例外の原因に応じてアプリケーションの動作を変更することができます。

パラメータ検証エラーの場合、アプリケーションは例外の原因となったエラーの詳細情報を取得するために、例外のHRESULTを使用することもできます。可能なHRESULTの値は、Winerror.hヘッダーファイルにリストされています。ほとんどのパラメータ検証エラーの場合、返されるHRESULTはE_INVALIDARG です。

+0

私はあなたが最初に例外が発生することなくソケットの状態を問い合わせることができないような、あなたが思ったことを理解していればそれを受け入れました(接続後にデータを送信しようとするまで壊れた)。 –

関連する問題