今回は Pingのサービス部分を実装。
前回作成したソリューションの「SilverlightPing.Web」プロジェクトにある IPing.cs を開き下記コードを追加する。
(実際には[OperationContract]の下のstring ExecutePing(string HostName); のみ)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace SilverlightPing.Web
{
// メモ: [リファクター] メニューの [名前の変更] コマンドを使用すると、コードと config ファイルの両方で同時にインターフェイス名 "IPing" を変更できます。
[ServiceContract]
public interface IPing
{
[OperationContract]
string ExecutePing(string HostName);
}
}
次に Ping.svc.cs を開き、ExecutePingメソッドを実装する。
このメソッドはPingが成功すればIPアドレス、bytes, timeを文字列として返し、失敗した場合には”NG”という文字列を返すメソッド。
今回はエラー処理を実装していない。必要に応じて追加する必要がある。
(あくまでもSilverlightでPingをするという実験なので)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace SilverlightPing.Web
{
// メモ: [リファクター] メニューの [名前の変更] コマンドを使用すると、コード、svc、および config ファイルで同時にクラス名 "Ping" を変更できます。
public class Ping : IPing
{
/// <summary>
/// Pingを実行する
/// </summary>
/// <param name="HostName">Ping対象のホスト</param>
/// <returns></returns>
public string ExecutePing(string HostName)
{
System.Net.NetworkInformation.Ping ping = new System.Net.NetworkInformation.Ping();
System.Net.NetworkInformation.PingReply reply;
// Pingを送信
reply = ping.Send(HostName);
// Pingが成功したか?
if (reply.Status == System.Net.NetworkInformation.IPStatus.Success)
return reply.Address.ToString() + ":bytes=" + reply.Buffer.Length.ToString() +
" Time=" + reply.RoundtripTime.ToString() + "ms";
else
return "NG";
}
}
}
Pingサービスの作成はこれで終了。
次に、作成したサービスを使用できるようにするため、「SilverlightPing」のプロジェクトにサービス参照を追加する。
「サービス参照の追加」ダイアログで[探索]ボタンをクリックして、先ほど作成したサービスを探し、「名前空間」に「PingService」と入力する。
「名前空間」に入力する名称は任意でよい。

次回はユーザーインターフェースの作成とPingの実行について記す。
Please follow and like us:

コメント
[…] 紹介 « [覚え書き] Silverlight で Pingするアプリを作る その2 […]