質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

1950閲覧

C# 下記のコードで、Errorの有無で場合分けのしかたを教えて下さい

niwa2019

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/05/23 05:08

https://teratail.com/questions/203549

// NTPサーバへの接続用UDP生成 var ip = new System.Net.IPEndPoint(System.Net.IPAddress.Any, 0); var udp = new System.Net.Sockets.UdpClient(ip); // NTPサーバへのリクエスト送信 var sendData = new Byte[48]; sendData[0] = 0xB; udp.Send(sendData, 48, "time.windows.com", 123); // NTPサーバから日時データ受信 var receiveData = udp.Receive(ref ip); // 1900年1月1日からの経過秒数計算 var totalSeconds = (long)( receiveData[40] * Math.Pow(2, (8 * 3)) + receiveData[41] * Math.Pow(2, (8 * 2)) + receiveData[42] * Math.Pow(2, (8 * 1)) + receiveData[43]); var utcTime = new DateTime(1900, 1, 1).AddSeconds(totalSeconds); // 協定世界時 (UTC) からローカルタイムゾーンへの変更 var localTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, TimeZoneInfo.Local);

インターネットにオンラインの状態で、実行すると、
このコードで時刻を取得できます。

インターネットに繋がっていないオフライン状態で実行すると、
下記のエラーとなります。

System.Net.Dns.Error_11001 (System.String hostName) (at <aa976c2104104b7ca9e1785715722c9d>:0)
System.Net.Dns.GetHostByName (System.String hostName) (at <aa976c2104104b7ca9e1785715722c9d>:0)
System.Net.Dns.GetHostEntry (System.String hostNameOrAddress) (at <aa976c2104104b7ca9e1785715722c9d>:0)
System.Net.Dns.GetHostAddresses (System.String hostNameOrAddress) (at <aa976c2104104b7ca9e1785715722c9d>:0)
System.Net.Sockets.UdpClient.Send (System.Byte[] dgram, System.Int32 bytes, System.String hostname, System.Int32 port) (at <aa976c2104104b7ca9e1785715722c9d>:0)

下記のエラーが発生したかどうかを、IF文で場合分けは可能でしょうか?
System.Net.Dns.Error_11001

その場合、どういうコードにしたらいいのでしょうか?

オフラインの場合、この部分でエラーが発生します。
udp.Send(sendData, 48, "time.windows.com", 123);

この部分でエラーが発生した場合、発生しなかった場合で
IF文で場合分けというのは可能でしょうか?

インターネットの状態がオンラインかオフラインかどうかの場合分けではなく、

udp.Send(sendData, 48, "time.windows.com", 123);
この部分でのエラーの発生の有無で、場合分けをしたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/05/23 05:31

またお前か。アカウント複数使って質問しっぱなし。
gentaro

2021/05/24 01:06

回答しようかと思ったけど、過去の質問も投げっぱなしだし回答する意味なさそう。 こういう人に回答するのはちゃんとチェックしてない人か回答数稼ぎしたい人ぐらいだろうな。
guest

回答1

0

この場合、
try – catch 構文というのを使えばいいのでしょうか?

投稿2021/05/23 05:20

niwa2019

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/05/23 06:27

ひとまずはそれを使って実装してみましょう。 で、それで不具合が出たのなら、それについてお尋ねしてくれればよろしいかと
m.ts10806

2021/05/23 07:18

回答じゃなくて質問では。 質問編集して追記してください。 そして実際に書いて動かしてみれば要件満たせるかどうかは明白では。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問