2017-01-25 9 views
0

C++/Cx(UWP)でStreamSocketsを使用していますが、キープアライブ時間をどのように変更する必要はありません。私は両方のソケット(クライアントとサーバー)をテストし、15秒後にソケットがまだ接続されているかどうかを確認する必要があります。私は以下のコードのようにキープアライブ時間を定義しようとしましたが、私は今どのようにmuth時間が必要ですか? 1つの応答。StreamSocketControl.KeepAliveでkeep alive timeを定義する方法

クライアントソケット:

if (_clientSocket == nullptr) { 
    _clientSocket = ref new StreamSocket(); 
    _clientSocket->Control->KeepAlive = true; 
} 
return _clientSocket; 

サーバソケット:

if (_serverSocket == nullptr) { 
    try { 
     _serverSocket = ref new StreamSocketListener(); 
     _serverSocket->Control->KeepAlive = true; 


     Log::LogMessage(this->GetType()->FullName, Level::Info, "Server Socket created!"); 
    } 
    catch (Exception^ excp) { 
     Log::LogMessage(this->GetType()->FullName, Level::Info, "Error on create server socket = " + excp->ToString()); 
    } 
} 
return _serverSocket; 

どのように私はStreamSocket上のキープアライブ時間を定義することができますか?

答えて

0

_serverSocket-> Control-> KeepAlive = true;

このプロパティをTRUEに設定すると、低レベルのTCPキープアライブパケットが送信されることを意味します。デフォルト値はfalseです。このキープアライブプロパティの時刻を設定することはできません。キープアライブ値はシステムによって計算されます。

TransferOwnership

これをよると、あなたがのTimeSpan(keepAliveTimeが)を設定することができます - ソケット仲介サービスは、活動のためのソケットを監視する必要がありますどのくらい。 したがって、値を10分に設定すると、ブローカサービスはソケットアクティビティを10分間監視し、SocketActivityTriggerが理由KeepAliveExpiredで起動されます。しかし、KeepAliveTime値がシステム計算されたkeepAliveTime値よりも高い場合、KeepAliveExpiredがシステム値に応じて起動されるように注意してください。

例: TimeSpanを20分に設定します。システムは5分ごとにキープアライブパケットを送信する時間を計算します。つまり、5分ごとにキープアライブパケットが送信され、20分ごとに送信されるわけではありません。

関連する問題