[覚え書き] Silverlight で Pingするアプリを作る その2

スポンサーリンク

今回は 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の実行について記す。

コメント

  1. […] 紹介 « [覚え書き] Silverlight で Pingするアプリを作る その2 […]

タイトルとURLをコピーしました