C++ Builder CE code fragment

ping()関数でタイムアウトをデフォルト引数で指定する

前記事

でping()を扱いましたが、ここではプロパティーのReceiveTimeoutを600msと固定的に書いていましたが、C++のデフォルト引数の機能(書き方ともいふ)を使って、指定がなければ600でそれ以外の場合は引数として指定できるように変更しますかね。とすると、まずヘッダというか関数のプロトタイプ宣言は、ping.hで、

String ping(String host);

から

String ping(String host, int timeout=600);

になります。本体ping.cppはこの変更を反映して、

#include "ping.h"

String ping(String host, int timeout=600)
{
	TIdIcmpClient* icmp = new TIdIcmpClient();

	icmp->Host = host;
	icmp->ReceiveTimeout = timeout;
	icmp->Ping();

	if( icmp->ReplyStatus->ReplyStatusType == rsTimeOut )
		return "time out";
	else
		return icmp->ReplyStatus->MsRoundTripTime;

    delete icmp;

}

となります。こちらの方がより便利に使えますよね。

コメント