SIN@SAPPOROWORKSの覚書

C#を中心に、夜な夜な試行錯誤したコードの記録です。

2011-11-01から1ヶ月間の記事一覧

IcmpSendEcho()によるpingの送受信(#C)(#F)

F# C#

IPHLPAPI.DLLのIcmpSendEcho()によりpingの送受信が行えます。 以前に紹介した、System.Net.NetworkInformation.Pingより、ややきめ細かい指定が可能です。 C#サンプル using System; using System.Runtime.InteropServices; namespace Example { class Prog…

DHCPで取得したアドレスのreleaseとrenew (C#)(F#) その2

F# C#

先日の同タイトルの記事のうち、F#サンプルを書き直してみたので再投です。DHCPで取得した動的アドレスは、iphelapi.dllのIpReleaseAddressとIpRenewAddressで開放と再取得が可能です。同APIのパラメータ(IP_ADAPTER_INDEX_MAP )は、GetInterfaceInfoで取…

あ〜Ping 「ICMPがファイアウォールでブロックされている端末の疎通確認」

HokkaidoCap#8でLTのお時間頂きました。最近のPCは、パーソナルファイアウォールにより、ほとんどの場合デフォルトでpingに返事しないようになっています。LAN内のPCをpingで確認しようとしても、返事が返ってこないのでちょっと面倒くさい。 今回は、ICMPを…

DHCPで取得したアドレスのreleaseとrenew (C#)(F#)

F# C#

2011.11.28 追記 本記事のF#サンプルを書き直しました。DHCPで取得した動的アドレスは、iphelapi.dllのIpReleaseAddressとIpRenewAddressで開放と再取得が可能です。同APIのパラメータ(IP_ADAPTER_INDEX_MAP )は、GetInterfaceInfoで取得したインターフェ…

HttpWebRequestで取得したデータをcharsetに応じてデコードする (C#)(F#)

F# C#

先にも書いた通り、HttpWebRequestで取得したデータをstringに変換する際、HttpWebResponsのCharacterSetプロパティで示されるエンコード形式は正確でない事があります。下記のサンプルでは、HttpWebRequestで取得したデータをbyteで受け、一旦ASCIIでstring…

HttpWebRequestによる軽易なHTTPデータ受信 (C#)(F#)

F# C#

System.Net.WebRequestを利用すると、軽易にHTTPでデータを取得できます。 サンプルでは、HTTPリクエストと同レスポンスのヘッダを列挙表示しています。受信したデータの本体を取得する場合はHttpWebResponsのGetResponseStream()でストリームを生成しこれを…

BLackJumboDog 運転と改造のすすめ

CLR/H64 でお話させて頂きました。参加された方々、つまらない話に1時間もおつきあい頂き感謝です。 もし、ご利用になられる事がありましたら、気楽に声を掛けてください。 全面的にサポートさせて頂きます。 B lack jumbodog 運転と改造のすすめ View more…

パケットの送受信量 (C#)(F#)

F# C#

System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces()でパケットの送受信量を取得することができます。サンプルでは、キーを押すたびに最新の情報を再表示します。C#サンプル using System; using System.Net.NetworkInformation; nam…

Socketを利用したパケットモニタ (C#)(F#)

F# C#

IP層で動作するパケットモニタです。 SocketType.Raw, ProtocolType.IPでSocketを作成し、IOControlでIOControlCode.ReceiveAllをセットします。 IOControlCode.ReceiveAllは、SIO_RCVALLと同じです。取得したデータは、IP層のデータですので、8バイト目がTT…

ネットワークアダプタの情報 ipcnfig /all (C#)(F#)

F# C#

WMIのWin32_NetworkAdapterConfigurationによって、ipconfig /allで取得するようなネットワークアダプタの情報を取得する事ができます。 ※WMIを使用するには、参照設定で「System.Management」を追加する必要があります。C#サンプル using System; using Sys…

モデムカードの分解

1.一枚50円今は懐かしい、Cバスのモデムカードを入手しました。 店頭では1枚500円という値札が貼られてましたが、山済みされたカードを4枚持ってきて頼んでみると、1枚で50円という破格(?)になりました。 少し、リレーの色や部品の型番に違いが…

ルーティングテーブルの取得 (C#)(F#)

F# C#

WMI(WindowsManagementInstrumentation) からルーティングテーブルの情報を取得することができます。 サンプルは、「route print -4」とした時と同じです。 なお、インターフェースは、「Win32_IP4RouteTable」クラスでは、インデックス番号しか取得できませ…

ARPテーブルの削除 (C#)(F#)

F# C#

iphlpapi.dllのDeleteIpNetEntry()を使用してARPテーブルの削除が可能です。 下記のサンプルは、現在のARPテーブルを取得して、その情報を削除しています。(コマンドのラインから「arp -d」とした場合と同じ) static(静的)なテーブルを削除したくない…

ヘッドセットの変わりに電話機を使用する

パソコンのオーディオ端子(ヘッドフォン・マイク)に電話機を接続して使用する方法を考えてみました。ヘッドセットの変わりに電話機を使用するイメージです。1.試作電話機が動作できるように電話回線に直流電圧を加えます。トランスは、古いモデムを分解し…

ARPテーブルの取得 (C#)(F#)

F# C#

ARPテーブル一覧は、iphlpapi.dllのGetIpNetTable()で取得できます。 サンプルは、コマンドラインから「arp -a」としたものと同じです。C#サンプル using System; using System.Runtime.InteropServices; using System.Collections.Generic; using System.Li…

ARPテーブルの追加 (C#)(F#)

F# C#

iphlpapi.dllの CreateIpNetEntry()でARP追加することができます。追加した、ARPテーブルは、コマンドラインで「arp -a」とする事で確認できます。CreateIpNetEntry()は、追加情報がすでに存在するときエラーとなるので、サンプルを実行する場合は、「arp -d…

TCPコネクションの一覧取得(プロセスID含む) (C#)(F#)

F# C#

netstatに-oオプションを付けると、それぞれのコネクションのプロセスIDが表示されますが、GetTcpTable()では、プロセスIDを取得することができません。WindowsXPまでは、この情報が必要な場合、非公開のAPIであるAllocateAndGetTcpExTableFromStack()を使用…

pingの送受信 (C#)(F#)

F# C#

pingの送受信は、System.Net.NetworkInformation.Pingが使用できます。 宛先にはホスト名でもIPアドレス指定可能できます。 名前解決に失敗すると例外が発生するので、ホスト名で宛先を指定する時は例外処理が必要です。 ※IPv6アドレスでも使用可能ですが、R…

TCPコネクションの一覧取得 (C#)(F#)

F# C#

TCPコネクションの一覧は、iphlpapi.dllのGetTcpTable()で取得することが可能です。 GetTcpTable()で取得するデータサイズは、最初にnullを指定して確認します。コマンドラインから「netstat -an -p TCP」としたときの出力と同じものです。C#サンプル using …