「C#」カテゴリーアーカイブ

SNTP サーバーとの時刻比較(その1)

IPv6 のユニークローカルユニキャストアドレス算出ツールのついでに作った SNTP サーバーとの時刻比較ツールについて書いてみます。ついでに作ったものなので、コンソールベースのアプリケーションです。使っているパソコンの時刻がどの程度合っているのかを確認するだけなので。。。まぁあんまり使う機会もないかなと 🙂 続きを読む SNTP サーバーとの時刻比較(その1)

IPv6 ユニークローカルユニキャストアドレスのプレフィクス部の計算ツール

家庭内 LAN で IPv6 のユニークローカルユニキャストアドレスを使ってみようかと思い立って、RFC 4193 Unique Local IPv6 Unicast Addresses の 3.2.2. Sample Code for Pseudo-Random Global ID Algorithm に沿った計算を行うツールを C# と WPF で作ってみました。ソースコードとプログラムは MAKCRAFT のページで公開したので、ここでは計算するために作った Ipv6Util クラスを書いておきます(他の部分は UI 関係になるので 🙂 )。 続きを読む IPv6 ユニークローカルユニキャストアドレスのプレフィクス部の計算ツール

IPv4 と IPv6 で接続待ちを行う

接続待ちの別スレッド化を行なってみたので、次は IPv4 と IPv6 の双方で接続待ちを行うプログラムを書いてみました 🙂
接続待ちを IPv4 と IPv6 で平行して行う必要があるので、accept は非ブロッキングな BeginAcceptTcpClient を利用するようにしています。また、 接続要求を二箇所で受けることになることから、クライアントへの同時サービス数の制御が「サーバー側接続待ちの別スレッド化の試作」の方法では行えなくなるので、接続要求の受け付けとサービス処理を切り離し、両者をキューを介して結びつけるようにしています。 続きを読む IPv4 と IPv6 で接続待ちを行う

クライアント・サーバー型システムの試作(クライアント)

クライアント・サーバー型システムの試作(サーバー)の続きでクライアント側のプログラムです。プロトコルや画面表示内容はサーバー側の投稿にあるので、さっそくコードを。ちなみにコンソール・アプリケーションです。 続きを読む クライアント・サーバー型システムの試作(クライアント)

クライアント・サーバー型システムの試作(サーバー)

ちょっと思い立ってクライアント・サーバー型システムの骨組みのようなものを作ってみました 😉

プログラムの配布ページの方に zip ファイルのダウンロードページを作ったので、ファイルが欲しい方はそちらからダウンロードして下さい。 続きを読む クライアント・サーバー型システムの試作(サーバー)

Entity Framework 4.1 での同時更新対応

久しぶりに C# の話題で。

ASP.NET MVC と Entity Framework を利用した開発でのデータ更新の衝突への対応法が Handling Concurrency with the Entity Framework in an ASP.NET MVC Application (7 of 10) (Microsoft ASP.NET) に書かれていますが、”連番になるユニークな値を取得したい” ような場合は、どうすればいいのな?ということで、試してみました。 続きを読む Entity Framework 4.1 での同時更新対応

静的クラスの併行呼び出し時の動作

静的クラスでラッピングするコードを書いたときに、メソッドがマルチスレッドで同時に呼ばれたときの動き(コンフリクトが発生するかどうか)が気になって、確認してみました。

結論としては、

  • メソッドに引数として渡された物は、値型・参照型の別に関わらず、メソッド呼び出しで上書きされることはない。
  • プロパティにセットすることで渡された値型の項目は、上書きされてしまう。
  • プロパティにセットすることで渡された参照型の項目への参照先情報は、上書きされてしまう(後からセットされた参照先への参照になる)。

というところです。 続きを読む 静的クラスの併行呼び出し時の動作

SMTP Over SSL 接続で配送依頼を行う DLL の更新

SmtpOverSsl.dll を更新しました。

変更点は次のとおりです。

  • SMTP サーバの接続情報を保持しておくために、ラッピングする静的クラスを追加
  • 上記に伴い、マルチタスクでの並行呼出しで問題が発生する ErrorMessage (メール送信時のエラー情報)プロパティを廃止し、ApplicationException のキャッチも廃止
  • 上記に伴い、smtp.send(SmtpMailMessage) の型を void に変更
  • smtp クラスの encoding プロパティ名を MailEncoding へ変更

静的クラスの追加は、WebMatrix での _AppStart.cshtml ファイルを使用した SMTP サーバ接続情報の設定に対応することを目的としたものです。

ソースは、長くなってしまうので、ここには掲載しません。見たい方は、お手数ですが、zip ファイルをダウンロードしてください 😉