ブロッコリーを克服するまでプログラミング

プログラミングとか趣味とかを報告します。

c++:keepaliveを設定したい!

livedoorブログからの移転記事です。

 

C++のコードで、ソケット通信のkeepakive設定方法が、雑魚プログラマーの私にはわからぬ状態であった。調べてみると、どうやら tcp_keepalive構造体とWSAIoctlで設定できるということまで分かった。

こういう時はまず、Microsoftさんに訊く!

https://msdn.microsoft.com/en-us/library/windows/desktop/ms741621(v=vs.85).aspx

ほう(わかっていない)

SIO_KEEPALIVE_VALS control code (Windows)

ほう(英語わかっていない)

 

何はともあれ、値は適当で、下記のようにコードを書けば設定できる(?)

***********************************************************************************************************************************************

#include <Mstcpip.h>                               //struct tcp_keepaliveを使用

 

SOCKET mySock;

tcp_keepalive tcpKeepalive;

DWORD dRet;

 

tcpKeepalive.onoff = 1;                            // 0以外ならkeepaliveがオンになるようだ

tcpKeepalive.keepalivetime = 20000;      // 最初にkeepaliveを送るまでの時間(ms)

tcpKeepalive.keepaliveinterval = 1000;   // keepaliveを送る感覚(ms)

WSAIoctl(*mySock, SIO_KEEPALIVE_VALS, &tcpKeepalive, sizeof(tcpKeepalive), NULL, 0, &dReturn, NULL, NULL);

*************************************************************************************************************************************************