チャットアプリ

Size: px
Start display at page:

Download "チャットアプリ"

Transcription

1 チャットアプリ Socket クラスに依る TCP 非同期通信の方法 複数のクライアントが同時に接続出来る TCP を利用したクライアントサーバー型チャットアプリケーションを TcpClient と TcpListener クラスを使わずに Socket クラスを使って作る方法を紹介する 初めに 此処では 複数のクライアントが同時に接続出来る TCP を利用したクライアントサーバー型チャットアプリケーション (DOBON Chat) のサンプルを示し 其の要点を解説する.NET Framework では TCP を利用したデータ通信を行う為のクラスとして TcpClient 及び TcpListener クラス ( 共に System.Net.Sockets 名前空間 ) が用意されて居る 此等のクラスは内部で Socket クラス (System.Net.Sockets 名前空間 ) を使用して居り Socket クラスをより簡単に扱える様にする為のクラスで有ると謂える 併し Socket クラスを直接扱う場合と比べて機能的に劣り 而も取り扱いの難しさも然程変わらない 其処で此処では TcpClient と TcpListener クラスを使わずに Socket クラスを使ってサーバーとクライアントを作成して居る (TcpClient と TcpListener を使用した簡単なサンプルは DOBON.NET.NET Tips - TCP クライアント サーバープログラムを作成する に有る ) 対象読者.NET でのネットワークプログラミング ( 特にソケットを使った TCP 非同期通信 ) に興味が有る方を対象として居る 但し 此処ではネットワークや.NET プログラミングの基本的な事柄に付いては説明しないので 不明な点は MSDN ライブラリ等で調べて欲しい -1-

2 必要な環境 サンプル (DobonChat) は Visual Studio.NET 2003 で作成され.NET Framework 1.1 で動作確認をして居るが.NET Framework 1.0 でも問題なく動作すると思う クライアントの作成 クライアントはサーバーに接続し データの送受信を行う Socket クラスの場合 データの送信には Send 受信には Receive メソッドを使えば簡単で有る ( 巻末に一例が有る ) 併し チャットアプリケーションの場合 少なくとも Receive メソッドを其の儘呼び出す訳には行かない Receive メソッドはデータを受信する迄スレッドをブロックする為 ( ブロッキングモードの場合 ) 其の間データの送信はおろか 何も出来なく成る 何時データが送られて来るか解らないチャットでは常にデータの受信を待機して居なければ成らない為 此れは致命的で有る データの受信を待機しつゝ 送信も出来る様にするには ポーリングに依る方法 ( 参考資料 3) や Socket クラスの非同期メソッドに依る方法 ( 参考資料 1,2) が有る ポーリングに依る方法では Socket.Poll メソッド ( 又は Available プロパティ ) でデータの読み取りが可能かループやタイマーで監視し 読み取れると判断出来れば Receive メソッドで受信する様にする ポーリングは此の様に無駄なループを繰り返す為 CPU に負担を懸けると謂う欠点が有る 一方非同期メソッドに依る方法では Socket の BeginReceive と EndReceive メソッドを使用する 此処では此の方法を採用して居る 非同期受信では 先ず BeginReceive メソッドを呼び出す事に依り データの受信が開始される Receive メソッドではデータを受信しない限り処理が次へ進まないが BeginReceive メソッドは直ぐに終了し ブロックしない BeginReceive を呼び出した後にデータを受信すると 指定したコールバックメソッドが実行される 此のコールバックメソッドで EndReceive メソッドを呼び出し データを受信し 再び BeginReceive メソッドを呼び出して非同期受信を再開する様にする 以下に非同期メソッドを使ってデータを受信する簡単な例を示す Connect メソッドを使って既にサーバーと接続して居る Socket を此の StartReceive メソッドに渡す事に依り データの非同期受信が開始され データを受信すると UTF-8 でデコードし コンソールに出力して居る VB ' 非同期データ受信の為の状態オブジェクト Private Class AsyncStateObject Public Socket As System.Net.Sockets.Socket Public ReceiveBuffer() As Byte Public ReceivedData As System.IO.MemoryStream Public Sub New(ByVal soc As System.Net.Sockets.Socket) Me.Socket = soc Me.ReceiveBuffer = New Byte(1023) Me.ReceivedData = New System.IO.MemoryStream End Sub End Class ' データ受信スタート -2-

3 Private Shared Sub StartReceive _ (ByVal soc As System.Net.Sockets.Socket) Dim so As New AsyncStateObject(soc) ' 非同期受信を開始 soc.beginreceive(so.receivebuffer, 0, so.receivebuffer.length, _ System.Net.Sockets.SocketFlags.None, _ New System.AsyncCallback(AddressOf ReceiveDataCallback), so) End Sub ' BeginReceive のコールバック Private Shared Sub ReceiveDataCallback(ByVal ar As System.IAsyncResult) ' 状態オブジェクトの取得 Dim so As AsyncStateObject = CType(ar.AsyncState, AsyncStateObject) ' 読み込んだ長さを取得 Dim len As Integer = 0 Try len = so.socket.endreceive(ar) Catch ex As System.ObjectDisposedException ' 閉じた時 System.Console.WriteLine(" 閉じました ") Return End Try ' 切断されたか調べる If len <= 0 Then System.Console.WriteLine(" 切断されました ") so.socket.close() Return End If ' 受信したデータを蓄積する so.receiveddata.write(so.receivebuffer, 0, len) If so.socket.available = 0 Then ' 最後迄受信した時 受信したデータを文字列に変換 Dim str As String = _ System.Text.Encoding.UTF8.GetString(so.ReceivedData.ToArray()) ' 受信した文字列を表示 System.Console.WriteLine(str) so.receiveddata.close() so.receiveddata = New System.IO.MemoryStream End If ' 再び受信開始 so.socket.beginreceive(so.receivebuffer, 0, _ so.receivebuffer.length, _ System.Net.Sockets.SocketFlags.None, _ New System.AsyncCallback(AddressOf ReceiveDataCallback), so) -3-

4 End Sub C# // 非同期データ受信の為の状態オブジェクト private class AsyncStateObject public System.Net.Sockets.Socket Socket; public byte[] ReceiveBuffer; public System.IO.MemoryStream ReceivedData; public AsyncStateObject(System.Net.Sockets.Socket soc) this.socket = soc; this.receivebuffer = new byte[1024]; this.receiveddata = new System.IO.MemoryStream(); // データ受信スタート private static void StartReceive(System.Net.Sockets.Socket soc) AsyncStateObject so = new AsyncStateObject(soc); // 非同期受信を開始 soc.beginreceive(so.receivebuffer, 0, so.receivebuffer.length, System.Net.Sockets.SocketFlags.None, new System.AsyncCallback(ReceiveDataCallback), so); // BeginReceive のコールバック private static void ReceiveDataCallback(System.IAsyncResult ar) // 状態オブジェクトの取得 AsyncStateObject so = (AsyncStateObject) ar.asyncstate; // 読み込んだ長さを取得 int len = 0; try len = so.socket.endreceive(ar); catch (System.ObjectDisposedException) // 閉じた時 System.Console.WriteLine(" 閉じました "); return; -4-

5 // 切断されたか調べる if (len <= 0) System.Console.WriteLine(" 切断されました "); so.socket.close(); return; // 受信したデータを蓄積する so.receiveddata.write(so.receivebuffer, 0, len); if (so.socket.available == 0) // 最後迄受信した時 受信したデータを文字列に変換 string str = System.Text.Encoding.UTF8.GetString( so.receiveddata.toarray()); // 受信した文字列を表示 System.Console.WriteLine(str); so.receiveddata.close(); so.receiveddata = new System.IO.MemoryStream(); // 再び受信開始 so.socket.beginreceive(so.receivebuffer, 0, so.receivebuffer.length, System.Net.Sockets.SocketFlags.None, new System.AsyncCallback(ReceiveDataCallback), so); 此処で注意しなければ成らないのが コールバックメソッドは 初めに BeginReceive を呼び出したスレッドとは別のスレッドで実行されると謂う事で有る 詰り スレッドの同期が必要に成るケースが充分有り得る 例えば Socket クラスはスレッドセーフではないので 上記の様な非同期受信を行い乍 Send メソッド等を呼び出す場合には lock(vb.net では SyncLock) 等を使用してスレッドの同期を行う必要が有ると謂う事に成る ( 実際に此の様にして居るサンプルは殆ど見ないが ) 亦 受信したデータをテキストボックスに表示する場合等 コールバックメソッドからコントロールのメソッドを呼び出す時は Invoke メソッド ( 又は BeginInvoke メソッド ) を使用してコントロールのスレッドにマーシャリングする Socket クラスにはデータの受信以外に リモートホストへの接続 (BeginConnect EndConnect メソッド ) データの送信 (BeginSend EndSend メソッド ) の為の非同期メソッドも用意されて居る サーバーの作成 サーバーでは Socket.Bind メソッドでバインドし Listen メソッドでクライアントの接続を待機し Accept メソッドで接続を受け入れると謂うのが基本的な流れで有る 併し Accept メソッドは接続要 -5-

6 求がない限りブロックし続けて了う 此の対処法としては 先程と同様に ポーリング ( 参照資料 3) 非同期メソッド ( 参照資料 2) 更に スレッド化 ( 参照資料 1) と謂った方法が考えられる ポーリングでは 先と同じく Poll メソッドで接続の要求がないかループで監視し 有れば Accept メソッドで受け入れる様にする スレッド化に依る方法では Accept メソッドの呼び出しを別のスレッドで行う様にする ( 此の方法では接続の待機を中止する為に スレッドセーフでない Socket クラスの Close メソッドを別のスレッドから呼び出す事に成る ) DOBON Chat では 非同期メソッドの BeginAccept EndAccept メソッドを使用して居る 以下に BeginAccept メソッドを使った簡単な例を示す Listen メソッドが既に呼び出されて居る Socket を此の StartAccept メソッドに渡す事に依り クライアントからの接続を非同期で待機する VB ' クライアントの接続待ちスタート Private Shared Sub StartAccept(ByVal server As System.Net.Sockets.Socket) ' 接続要求待機を開始する server.beginaccept(new System.AsyncCallback(AddressOf AcceptCallback), server) End Sub ' BeginAccept のコールバック Private Shared Sub AcceptCallback(ByVal ar As System.IAsyncResult) ' サーバー Socket の取得 Dim server As System.Net.Sockets.Socket = CType(ar.AsyncState, System.Net.Sockets.Socket) ' 接続要求を受け入れる Dim client As System.Net.Sockets.Socket = Nothing Try ' クライアント Socket の取得 client = server.endaccept(ar) Catch System.Console.WriteLine(" 閉じました ") Return End Try ' クライアントが接続した時の処理を此処に書く ' 此処では文字列を送信して 直ぐに閉じて居る client.send(system.text.encoding.utf8.getbytes(" こんにちは ")) client.shutdown(system.net.sockets.socketshutdown.both) client.close() ' 接続要求待機を再開する server.beginaccept(new System.AsyncCallback(AddressOf AcceptCallback), server) End Sub C# // クライアントの接続待ちスタート private static void StartAccept(System.Net.Sockets.Socket server) -6-

7 // 接続要求待機を開始する server.beginaccept(new System.AsyncCallback(AcceptCallback), server); // BeginAccept のコールバック private static void AcceptCallback(System.IAsyncResult ar) // サーバー Socket の取得 System.Net.Sockets.Socket server = (System.Net.Sockets.Socket) ar.asyncstate; // 接続要求を受け入れる System.Net.Sockets.Socket client = null; try // クライアント Socket の取得 client = server.endaccept(ar); catch System.Console.WriteLine(" 閉じました "); return; // クライアントが接続した時の処理を此処に書く // 此処では文字列を送信して 直ぐに閉じて居る client.send(system.text.encoding.utf8.getbytes(" こんにちは ")); client.shutdown(system.net.sockets.socketshutdown.both); client.close(); // 接続要求待機を再開する server.beginaccept( new System.AsyncCallback(AcceptCallback), server); EndAccept メソッドに依り 接続したクライアントとの通信に使用する Socket オブジェクトが返される 上記のコードでは 接続したクライアントに文字列を UTF-8 でエンコードしたデータを送信し 直ぐに接続を閉じて居る チャットアプリケーションのサーバーでは 或るクライアントから受信したメッセージを接続中の総てのクライアントに送信する必要が有る 此れは単純に クライアントからデータを受信したら 接続中の一つ一つのクライアントの Socket.Send( 又は BeginSend) メソッドを呼び出してデータを送信する様にすれば良い 独自のアプリケーションプロトコルの定義 以上で チャットアプリケーションを作成する為の知識が揃いました 此れで当初の目的には達したと謂って良い -7-

8 併し 文字列の遣り取りが出来る様に成ったとは謂え 此れ丈では実用的なチャットアプリケーションには程遠い 現状では クライアント側で現在チャットに参加して居るメンバーを表示する事も 送られて来たメッセージを表示する時に其の送信者を併記する事も出来ないので有る 更に プライベートメッセージ ( 指定した人にしかメッセージを送信しない ) 等の機能は何の様に実装すれば良いのか 此の様に様々な機能を持つチャットアプリケーションを作成する為には 予めサーバーとクライアントの間で機能に応じた 決まり を用意して置く必要が有る 此れは アプリケーション層プロトコルと呼ばれる物で有る 此の 決まり は極簡単な物で構わない ( ちゃんとした物を作るならば RFC 特にチャットアプリケーションでは IRC が参考に成るだろう ) 良く有る 決まり の形式は 文字列のコマンドと一つ以上のパラメータから成り 夫々をスペース文字で区切り CR-LF( キャリッジリターン + ラインフィード ) で終わると謂う物で有る 例えば クライアントがプライベートメッセージを送信する時は PRIVMSG " メッセージの送信先 " " メッセージの内容 "CR-LF と謂う内容の文字列を UTF-8 でエンコードしたデータを送信すると決めて置く 此の様にして置く事に依り サーバーは PRIVMSG で始まり CR-LF で終わる文字列を受信した時に 其れがクライアントがプライベートメッセージの送信を要求して居る合図で有ると解り メッセージの内容と送信先を正しく理解する事が出来る 同様に サーバーからクライアントへのプライベートメッセージの送信でも PRIVMSG " メッセージの送信者 " " メッセージの内容 "CR-LF と謂う決まりにして置けば クライアントが PRIVMSG で始めるデータを受信した時 其のデータが自分丈に送られて来たプライベートメッセージで有り 誰が何の様なメッセージを送って来たのかが解る 此の様なコマンド ( 上記の例では PRIVMSG ) を増やして行く事に依り 機能を拡張する事が出来る 纏め 此の記事では TCP を利用した複数クライアントが接続可能なチャットアプリケーションの作り方を説明した ポイントを纏めると次の様に成る チャットアプリケーションでは長時間ブロックするメソッドの使用は厳禁で有る為 ( 例外有り ) 非同期メソッドの活用が有効で有る 非同期メソッドに依り呼び出されるコールバックメソッドは個別のスレッドで実行される為 スレッドの同期等の対策が必要と成る 既存のアプリケーション層プロトコルを利用しないならば 独自のアプリケーション層プロトコルを定義しなければ成らない -8-

9 参考資料 1.MSDN ライブラリ Creating a Multi-User TCP Chat Application 2.CodeGuru Asynchronous Socket Programming in C# 3.CSharpFriends.com Non-blocking Sockets (A Chat Program) 4.MSDN ライブラリ 非同期クライアントソケットの使用 5.MSDN ライブラリ 非同期サーバーソケットの使用 6.MSDN ライブラリ 非同期クライアントソケットの例 7.MSDN ライブラリ 非同期サーバーソケットの例

10 Socket を使って HTTP でファイルをダウンロードし表示する Socket クラスを使って HTTP サーバーに GET 要求し 応答を受信する方法を 具体例而巳示す 通常は WebRequest WebResponse クラスを使ってファイルをダウンロードし表示する の様な方法で充分で有る 説明は一切しないので 興味のある方而巳参考にして欲しい VB ' GET リクエストを送信するサーバー名とパス Dim server As String = " Dim path As String = "/" ' リクエストメッセージを作成する Dim reqmsg As String = "GET " + path + " HTTP/1.1" + vbcrlf + _ "Host: " + server + vbcrlf + "Connection: Close" + vbcrlf + vbcrlf ' 文字列を byte 配列に変換 Dim enc As System.Text.Encoding = System.Text.Encoding.GetEncoding("shift_jis") Dim reqbytes As Byte() = enc.getbytes(reqmsg) ' ホスト名から IP アドレスを取得 Dim hostadd As System.Net.IPAddress = System.Net.Dns.Resolve(server).AddressList(0) ' 又は ' System.Net.IPAddress hostadd = System.Net.Dns.GetHostByName(server).AddressList(0) ' IPEndPoint を取得 Dim ephost As New System.Net.IPEndPoint(hostadd, 80) ' Socket の作成 Dim sock As New System.Net.Sockets.Socket( _ System.Net.Sockets.AddressFamily.InterNetwork, _ System.Net.Sockets.SocketType.Stream, _ System.Net.Sockets.ProtocolType.Tcp) ' 接続 sock.connect(ephost) ' リクエストメッセージを送信 sock.send(reqbytes, reqbytes.length, System.Net.Sockets.SocketFlags.None) ' 受信する Dim resbytes(1023) As Byte Dim mem As New System.IO.MemoryStream While True Dim ressize As Integer = _ sock.receive(resbytes, resbytes.length, System.Net.Sockets.SocketFlags.None) If ressize = 0 Then Exit While End If -10-

11 mem.write(resbytes, 0, ressize) End While Dim resmsg As String = enc.getstring(mem.getbuffer(), 0, CInt(mem.Length)) mem.close() ' 閉じる sock.shutdown(system.net.sockets.socketshutdown.both) sock.close() ' 受信したメッセージを表示する Console.WriteLine(resMsg) C# // GET リクエストを送信するサーバー名とパス string server = " string path = "/"; // リクエストメッセージを作成する string reqmsg = "GET " + path + " HTTP/1.1 r n" + "Host: " + server + " r n" + "Connection: Close r n r n"; // 文字列を byte 配列に変換 System.Text.Encoding enc System.Text.Encoding.GetEncoding("shift_jis"); byte [] reqbytes = enc.getbytes(reqmsg); // ホスト名から IP アドレスを取得 System.Net.IPAddress hostadd = System.Net.Dns.Resolve(server).AddressList[0]; // 又は // System.Net.IPAddress hostadd = System.Net.Dns.GetHostByName(server).AddressList[0]; // IPEndPoint を取得 System.Net.IPEndPoint ephost = new System.Net.IPEndPoint(hostadd, 80); // Socket の作成 System.Net.Sockets.Socket sock = new System.Net.Sockets.Socket( System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp); // 接続 sock.connect(ephost); // リクエストメッセージを送信 sock.send(reqbytes, reqbytes.length, System.Net.Sockets.SocketFlags.None); // 受信する -11-

12 byte [] resbytes = new byte[1024]; System.IO.MemoryStream mem = new System.IO.MemoryStream(); while (true) int ressize = sock.receive(resbytes, resbytes.length, System.Net.Sockets.SocketFlags.None); if (ressize == 0) break; mem.write(resbytes, 0, ressize); string resmsg = enc.getstring(mem.getbuffer(), 0, (int) mem.length); mem.close(); // 閉じる sock.shutdown(system.net.sockets.socketshutdown.both); sock.close(); // 受信したメッセージを表示する Console.WriteLine(resMsg); -12-

プラグイン

プラグイン プラグイン プラグイン詳細 2 ~ プラグイン機能を持つテキストエディタの作成 ~ はじめに Adobe Photoshop や Becky! Internet Mail 等のアプリケーションでは プラグイン ( 又は アドイン エクステンション 等 ) と呼ばれるプログラムをインストールする事に依り 機能を拡張する事が出来る 此の記事では此の様なプラグイン機能を持ったアプリケーションの作り方を プラグイン対応のテキストエディタを作成する事に依り

More information

ファイル操作-バイナリファイル

ファイル操作-バイナリファイル ファイル操作 バイナリ ファイルを読み書きする バイナリファイル ( 即ちテキストファイル以外のファイル ) を読み書きするには FileStream クラス (System.IO 名前空間 ) を利用する FileStream クラスはファイル用のストリームをサポートするクラスで有り Stream クラス (System.IO 名前空間 ) の派生クラスの 1 つで有る 基本的には コンストラクタで指定したファイルのストリームに対して

More information

ICONファイルフォーマット

ICONファイルフォーマット グラフィックス 画像フォーマットエンコーダパラメータ 様々なフォーマットで画像を保存 Bitmap クラスを用いる事でビットマップ JPEG GIF PNG 等様々なフォーマットの画像を読み込み操作する事が出来る 更に Bitmap クラスや Graphics コンテナを用いて描画処理等を施したイメージをファイルに保存する事も出来る 此の時 読み込めるフォーマット同様に保存するフォーマットを選択する事が出来る

More information

プロセス間通信

プロセス間通信 プロセス間通信 プロセス間通信 (SendMessage) プロセス間通信とは 同一コンピューター上で起動して居るアプリケーション間でデータを受け渡し度い事は時々有る Framework には リモート処理 と謂う方法でデータの受け渡しを行なう方法が有る 此処では 此の方法では無く 従来の方法の API を使用したプロセス間通信を紹介する 此の方法は 送信側は API の SendMessage で送り

More information

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma

// このクラスの有効期間中の各呼び出しに使用される キャッシュされた Socket オブジェクト Socket socket = null; // 非同期処理が完了したことを通知するために信号を送るオブジェクト static ManualResetEvent clientdone = new Ma HOW DO I ソケットで通信を行うには ここでは以下の手順で説明します ソケットクライアントを作成するデータを送信するデータを受信するソケットクライアントを使用する ソケットクライアントを作成する 1. このコンテンツのサポートファイルの Start フォルダから "UDPClient" プロジェクトを開きます 2. クライアントを動作させるため コンピューターで簡易 TCP/IP サービスを有効にする必要があります

More information

NotifyIconコントロール

NotifyIconコントロール NotifyIcon コントロール システムトレイ ( タスクトレイ ) にアイコンを表示する.NET Framework 2.0 以降の場合は 後述の 2 を観て欲しい Outlook や MSN Messenger 等の様に Windows アプリケーションではシステムトレイ ( タスクトレイ ステータス領域等とも呼ばれる ) にアイコンを表示して アプリケーションの状態を示したり アプリケーションのフォームを表示したりする為のショートカットとして利用する事が出来る.NET

More information

正規表現応用

正規表現応用 正規表現 正規表現を使って文字列が或る形式と一致するか調べる 指定された正規表現のパターンと一致する対象が入力文字列内で見付かるか何うかを調べるには Regex クラスの IsMatch メソッドを使用する 此処では IsMatch メソッドを使った例を幾つか紹介する 猶 正規表現のパターンと一致する個所を探し 見付かれば 其の箇所を抽出する方法は 正規表現を使って文字列を検索し 抽出する で紹介して居る

More information

データアダプタ概要

データアダプタ概要 データベース TableAdapter クエリを実行する方法 TableAdapter クエリは アプリケーションがデータベースに対して実行出来る SQL ステートメントやストアドプロシージャで TableAdapter で型指定されたメソッドと仕て公開される TableAdapter クエリは 所有るオブジェクトのメソッドと同様に 関連付けられたメソッドを呼び出す事に依り実行出来る TableAdapter

More information

ハッシュテーブル

ハッシュテーブル ハッシュテーブル ハッシュテーブル ( 連想配列 ) を使う ハッシュテーブルとは キー (key) と値 (value) のペアを保持して居るコレクションで有る 通常の配列がインデックス番号に依り各値 ( 各要素 ) にアクセス出来るのに比べて ハッシュテーブルでは インデックス番号の代わりにキーを用いて 其の各値にアクセスする事が出来る キーと 其のキーから連想される ( 対応付けられて居る )

More information

mySQLの利用

mySQLの利用 MySQL の利用 インストール インストール時に特に注意点は無い 本稿記述時のバージョンは 6.5.4 で有る (2017 年 11 月現在では 6.10.4 で https://dev.mysql.com/downloads/connector/net/6.10.html よりダウンロード出来る ) 参照設定 インストールが終了すれば Visual Studio で参照の設定を行う 参照の設定画面で

More information

構造体

構造体 構造体 Byte 配列 構造体とコピーする方法 構造体とバイト配列の変換を行うには System.Runtime.InteropServices 名前空間をインポートして置くと便利で有る Imports System.Runtime.InteropServices using System.Runtime.InteropServices; 下記の 3 種類の構造体にバイト配列の値を格納した場合に付いて検証する

More information

ListViewコントロール

ListViewコントロール ListView コントロール ListView コントロールへ項目を追加 本稿では.NET Framework の標準コントロールで有る ListView コントロール (System.Windows.Forms 名前空間 ) を活用する為に ListView コントロールにデータを追加する方法を紹介する ListView コントロールは データ項目をアイコン表示や詳細表示等に依り一覧表示する為の物で

More information

VB.NET解説

VB.NET解説 Visual Basic.NET 印刷編 目次 印刷の概要... 2 印刷の流れ... 2 標準の Windows フォーム印刷ジョブの作成... 3 実行時に於ける Windows フォーム印刷オプションの変更... 3 Windows フォームに於ける接続されたプリンタの選択... 4 Windows フォームでのグラフィックスの印刷... 5 Windows フォームでのテキストの印刷...

More information

ファイル操作

ファイル操作 ファイル操作 TextFieldParser オブジェクト ストリームの読込と書込 Microsoft.VisualBasic.FileIO 名前空間の TextFieldParser オブジェクトは 構造化テキストファイルの解析に使用するメソッドとプロパティを備えたオブジェクトで有る テキストファイルを TextFieldParser で解析するのは テキストファイルを反復処理するのと同じで有り

More information

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値

Visual Basic 資料 電脳梁山泊烏賊塾 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値 コレクション初期化子 コレクション初期化子 初めに.NET 版の Visual Basic では 其れ迄の Visual Basic 6.0 とは異なり 下記の例の様に変数宣言の構文に 初期値を代入する式が書ける様に成った 其の際 1 の様に単一の値 ( 此処では 10) を代入する丈でなく 2 の配列変数の宣言の様に ブレース { } の中にカンマ区切りで初期値のリストを記述し 配列の各要素に初期値を代入出来る様に成った

More information

グラフィックス

グラフィックス グラフィックス PictureBox の Image プロパティに関する良く有る勘違い PictureBox に画像を表示する方法と仕て PictureBox の Image プロパティを使う方法と Graphics の DrawImage メソッドを使う方法が有るが 此の 2 つの方法を混同し 正しく理解して居ない事が多い様で有る 例えば 下記に列挙する様な状況が 此れに該当する 1.PictureBox

More information

ファイル監視

ファイル監視 ファイル操作 ファイルやディレクトリの監視 FileSystemWatcher クラス.NET Framework のクラスライブラリには ファイルやディレクトリの作成 変更 削除を監視する為の FileSystemWatcher クラスが System.IO 名前空間に用意されて居る ( 但し Windows 98/Me では利用出来ない ) 此れを利用すると 特定のディレクトリにファイルが作成された

More information

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある インターネットアドレス

12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある   インターネットアドレス Java 独習第 3 版 12.1 インターネットアドレス 12.2 サーバーソケットとソケット 2006 年 7 月 5 日 ( 水 ) 南慶典 12.1 インターネットアドレス インターネットアドレス インターネットアドレス 32 ビットの長さを持つインターネットに接続されたマシンを識別するのに使う インターネットアドレスは ピリオドで区切られたトークンの並びで表現されることもある www.mycompany.com

More information

データベースプログラミング

データベースプログラミング データセットとデータテーブル データセット (DataSet) とは何かに付いて 簡単に説明する データセットとは 典型的な.NET の Windows データベースアプリケーションでは データセットを通じてアプリケーションからデータベースにアクセスする データセットとは 簡単に謂うと データベースから取得したレコードをメモリ上に持つ為の入れ物で有る 例えば データベースからレコードを取得し 其れをグリッドコントロールに表示する様な

More information

Userコントロール

Userコントロール User コントロール 初めてのユーザーコントロールの作成 作成したクラスは他のプログラムで再利用出来る為 同じコードを何度も繰り返し作成する必要が無い コントロールも 複数のプロジェクトで再利用出来るクラスで有る 同じユーザーインターフェイスを何度も繰り返してデザインすると謂う経験は 恐らく誰でも有る 例えば 姓と名を入力する為の TextBox コントロールを追加した後で 両方を組み合わせてフルネームを作成するコードを追加する等の作業で有る

More information

ファイル操作-インターネットキャッシュ

ファイル操作-インターネットキャッシュ ファイル操作 インターネット一時ファイルの保存場所 インターネットキャッシュ インターネット一時ファイルの保存場所は Internet Explorer の場合 下記の手順で確認する事が出来る 1.[ ツール ] [ インターネットオプション ] でインターネットオプション画面のダイアログを表示させる 2.[ 全般 ] タブで [ インターネット一時ファイル ] グループの [ 設定 ] をクリックすると

More information

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの

VB 資料 電脳梁山泊烏賊塾 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るの 音声認識 System.Speech の利用 System.Speech に依るディクテーション ( 音声を文字列化 ).NetFramework3.0 以上 (Visual Studio 2010 以降 ) では 標準で System.Speech が用意されて居るので 此れを利用して音声認識を行うサンプルを紹介する 下記の様な Windows フォームアプリケーションを作成する エディタを起動すると

More information

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスが PYTHON 入門 関数とメソッド 関数とメソッド Python には関数 (function) とメソッド (method) が有る モジュール内に def で定義されて居る物が関数 クラス内に def で定義されて居る物がメソッドに成る ( 正確にはクラスがインスタンス化されてからメソッドに成る ) # 関数 def test_func(): print('call test_func') #

More information

チャットプログラム

チャットプログラム チャット VB 2005 5 プログラムの概要 Winsock コントロールを使用すると リモートコンピュータに接続し データを交換出来る事を利用して チャット ( 通信雑談システム ) を作成する サーバー クライアント共に 背景色が黄色のテキストボックスに必要項目を入力し 設定ボタンをクリックすると 通信が確立し チャットを開始する事が出来る 送信用テキストボックスに送信文を入力して送信ボタンをクリックすると

More information

ルーレットプログラム

ルーレットプログラム ルーレットプログラム VB 2005 4 プログラムの概要 カジノの代表的なゲーム ルーレット を作成する 先ず GO! ボタンをクリックすると ルーレット盤上をボールが回転し 一定時間経過すると ボールが止まり 出目を表示するプログラムを作成する 出目を 1~16 大小 偶数奇数の内から予想して 予め設定した持ち点の範囲内で賭け点を決め 賭け点と出目に依り 1 点賭けの場合は 16 倍 其他は 2

More information

DAOの利用

DAOの利用 DAO VB2005 で DAO を使用して Excel のデータを取得 Visual Basic 6.0 Dim DB As DAO.Database Dim RS As DAO.Recordset Dim xlfilename As String Dim xlsheetname As String xlfilename = Form1.StatusBar1.Panels(12) & Dir(Form1.StatusBar1.Panels(12)

More information

ウィンドウ操作 応用

ウィンドウ操作 応用 Win32API 関数 ウィンドウ操作 ウィンドウ名でトップレベルウィンドウ ( 親を持たないウィンドウ ) のハンドルを取得 メモ帳や電卓等のウィンドウ名でトップレベルウィンドウ ( 親を持たないウィンドウ ) のハンドルを取得する方法を 下記に示す Visual Basic Imports System.Runtime.InteropServices Public Class WindowFromWindowName

More information

PowerPoint Presentation

PowerPoint Presentation 上級プログラミング 2( 第 1 回 ) 工学部情報工学科 木村昌臣 今日のテーマ 入出力に関わるプログラムの作り方 ネットワークプログラミングの続き TCP の場合のプログラム 先週のプログラムの詳細な説明 URLクラス サーバープログラムの例 データ入出力プログラミングの復習 テキストの読み込み関係のクラス テキストからデータを読み込むときには 通常 三段構えで行う バイナリデータとして読み出し

More information

メール送信

メール送信 メール Visual Basic 2005 でのメール送信 1 System.Net.Mail 名前空間の MailMessage クラスと SmtpClient クラスを使用 メール送信機能の有るアプリケーションを作成する必要が有る場合が有る 其処で 此処では メールの送信機能を持つアプリケーション ( 図 1) の作成方法に付いて紹介する 図 1 Visual Basic 6.0 では Microsoft

More information

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~ .NET プログラマー早期育成ドリル VB 編 付録文法早見表 本資料は UUM01W:.NET プログラマー早期育成ドリル VB 編コードリーディング もしくは UUM02W:.NET プログラマー早期育成ドリル VB 編コードライティング を ご購入頂いた方にのみ提供される資料です 資料内容の転載はご遠慮下さい VB プログラミング文法早見表 < 基本文法 > 名前空間の定義 Namespace

More information

Microsoft Excel操作

Microsoft Excel操作 Microsoft Excel 操作 Excel ファイルにアクセス リフレクションを利用したレイトバインディングで Excel ファイルを操作 Visual Basic なら CreatObject 関数を使用して 暗黙の遅延バインディングを利用する事に依り 簡単にに実現出来る Excel の操作も C# で実現するには 少し面倒臭い事に成る 事前バインディングでも実装する事も出来るが 事前バインディングだと

More information

MISAO with WPF

MISAO with WPF System.AddIn を利用した アプリケーション拡張 - アドインの開発 - JZ5( 松江祐輔 )@ わんくま http://katamari.jp http://katamari.wankuma.com 2008/9/13 What s System.AddIn System.AddIn 名前空間 Visual Studio Orcus から利用可能 アプリケーションに拡張機能を提 供 なんかいろいろ特長が?

More information

VB実用Ⅲ⑩ フリーデータベースⅡ

VB実用Ⅲ⑩ フリーデータベースⅡ MySQL の利用 MySQL の ODBC(MyODBC) テキストでは MySQL Connector/ODBC(mysql-connector-odbc-3.51.14-win32.msi) をインストールした場合に付いて解説して居るが 此処では MyODBC(MyODBC-3.51.10-x86-win-32bit.msi) をインストールし myodbc-3.51.06-conv_ujis.zip

More information

スレッド操作 タイマー

スレッド操作 タイマー スレッド操作 タイマー System.Windows.Forms.Timer Windows フォームの Timer は 一定の間隔でイベントを発生させるコンポーネントで有る 此のコンポーネントは Windows フォーム環境で使用する サーバー環境に適したタイマが必要な場合は 後述の System.Timers.Timer を使用する イベントの発生する間隔は ミリ秒単位で Interval プロパティで設定しする

More information

メール受信

メール受信 メール.NET で POP サーバからメールを受信する方法 初めに.NET Framework 1.0 1.1 にはメールを送信する為の System.Web.Mail.SmtpMail クラスが用意されて居る.NET Framework 2.0 には System.Net.Mail.SmtpClient クラスが用意されて居る ( 猶 2.0 にも System.Web.Mail.SmtpMail

More information

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略   

LogisticaTRUCKServer-Ⅱ距離計算サーバ/Active-Xコントロール/クライアント 概略       - LogisticaTRUCKServer-Ⅱ(SQLServer 版 ) 距離計算サーハ API ソケット通信サンフ ルフ ロク ラム -1- LogisticaTRUCKServer-Ⅱ 距離計算サーハ API ソケット通信 Java でのソケット通信 Javaでのソケット通信の実行サンフ ルフ ロク ラムポート番号は 44963 条件値, 起点, 終点 を送信して 条件値, 起点, 終点,

More information

通信対戦プログラム

通信対戦プログラム チャット VB5 プログラムの概要 Winsock コントロールを使用すると リモートコンピュータに接続し データを交換出来る事を利用して チャット ( 通信雑談システム ) を作成する サーバー クライアント共に 背景色が黄色のテキストボックスに必要項目を入力し 設定ボタンをクリックすると 通信が確立し チャットを開始する事が出来る 送信用テキストボックスに送信文を入力して送信ボタンをクリックすると

More information

ブロック パニック

ブロック パニック ブロックパニック VB 2005 9 プログラムの概要 壁が迫り来る不思議な空間のオリジナルゲーム ブロックパニック を作成する スタートボタンをクリックし上下左右の矢印キーで白猿を移動させる スペースキーを押すと 向いて居る方向の壁が後退する 左右の壁が合わさると ゲームは終了する 一般的に 実用プログラムに比較するとゲームプログラムは 高度なテクニックを要求される事が多い 此処では ゲームプログラムを作成する事に依り

More information

回文作成支援プログラム

回文作成支援プログラム 回文作成支援プログラム VB1 プログラムの概要 原文を 1 字入力する度に 其の回文が順次表示される 即ち AB と入力すると ABA と表示され ABC と入力すると ABCBA と表示される 亦 消去ボタンをクリックすると 原文 及び 回文を消去する事も出来る 終了ボタンをクリックすると プログラムをメモリから消去して終了する 今回の課題項目 単純変数の宣言 (Dim) 標準コントロールの利用

More information

モグラ叩きプログラム

モグラ叩きプログラム プログラミングの有用性 VB 2005 1 醒めよ!! 遣り度い事を遣るには 先ず 遣らなければ成らない事を遣る! 現に 其の事に気付いて 日々 其の 遣らなければ成らない事 に邁進して居る人間が 居る 寧ろ 其れを愉しんでさえ居る者も居る 然して 着実に 世の中が必要とする技 術を身に付けて行って居る者が居る 併し 何が 遣らなければ成らない事 なのか解らない場合は 現実に対応出来る技術力 を持ち

More information

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 文字列 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが 基本的な方法は下記の 2 種で有る 対象と成る文字の集まりをダブルクオーテーション ( " ) で囲うか シングルクオーテーション ( ' ) で囲う PYTHON3 "

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 文字列 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが 基本的な方法は下記の 2 種で有る 対象と成る文字の集まりをダブルクオーテーション (  ) で囲うか シングルクオーテーション ( ' ) で囲う PYTHON3 PYTHON 入門 文字列 文字列リテラル プログラムの中で文字列を表す方法は幾つか有るが 基本的な方法は下記の 2 種で有る 対象と成る文字の集まりをダブルクオーテーション ( " ) で囲うか シングルクオーテーション ( ' ) で囲う " 文字列 " ' 文字列 ' 他のプログラミング言語ではダブルクオーテーションとシングルクオーテーションで囲う場合では エスケープ処理等の扱いが異なる物が多いが

More information

ADO.NETのアーキテクチャ

ADO.NETのアーキテクチャ データベース ADO.NET のアーキテクチャ 従来のデータ処理は 主に接続をベースとした 2 層モデルに基づいて居た 最近のデータ処理では 多階層アーキテクチャが多用される様に成った為 プログラマは 非接続型アプローチへと切り替えて アプリケーションに より優れたスケーラビリティを提供して居る ADO.NET のコンポーネント ADO.NET には データへのアクセスとデータの操作に使用出来るコンポーネントが

More information

Network Programming

Network Programming ネットワークプログラミング 田村寿浩馬建華 目次 サーバーの概要 構成 ネットワークのレイヤー TCPを利用した通信 Javaによるネットワークプログラミング サーバーとは サーバーとはクライアントからの要求に対して何らかのサービスを提供する役割を果たしているプログラム又は稼働させている機器を表す 例 :Web サーバー ウェブブラウザの URL に指示された Web サーバ内に存在する HTML

More information

ブロック崩し風テニス

ブロック崩し風テニス ぱっくんフィッシング VB 2005 13 プログラムの概要 パーティゲームとして良く知られた釣りゲームです マウスで釣り糸を操作して 開閉する魚の口に餌を垂らし 魚が餌を咥えると 釣り上げ 籠の中に入れます 直ぐに口を開けて 海に逃れる魚 中々餌を離さず 籠に入らない魚と 色々なバリエーションが楽しめます 一般的に 実用プログラムに比較するとゲームプログラムは 高度なテクニックを要求される事が多い

More information

Android Layout SDK プログラミング マニュアル

Android Layout SDK プログラミング マニュアル プログラミングマニュアル Version 1.3.0 用 更新履歴 年月日 バージョン 履歴 2014.09.08 1.2.0.0 新規 (Layout Utilities ユーザーズ ガイド ) 2016.08.16 1.3.0.0 モバイル端末用レイアウトで直線部品と矩形部品に対応 モバイル端末用レイアウトファイルを CLFX から XML へ変更 Layout Print Engine から

More information

(Microsoft PowerPoint - \223\306\217KJava\221\346\202R\224\305.ppt)

(Microsoft PowerPoint - \223\306\217KJava\221\346\202R\224\305.ppt) 独習 Java 第 3 版 12.1 インターネットアドレス 12.2 サーバーソケットとソケット 12.3 データグラムソケット とデータグラムパケット 12.4 URL インターネットアドレス インターネットアドレスとは? 32 ビットの長さを持ち インターネットに接続されたマシンの識別のために用いられる アドレスはピリオドで区切られた 4 つの番号からなる ピリオドで区切られたトークンの並びで表現されることもある

More information

データベースⅠ

データベースⅠ データベース操作プログラム Ⅰ VB 2005 8 プログラムの概要 データベースプログラムを手軽に作成する方法としては Access のフォーム機能を用いる事が 先ず考えられます ウィザードも充実しており 操作を覚えれば簡単に作成する事が出来ます 其れでは VB でデータベースプログラムを作るメリットは何んでしょうか 1 つは Access のフォーム機能に比べ コントロールが充実している事 より自由なデザインが可能です

More information

ASP.NET 2.0 Provider Model 概要

ASP.NET 2.0 Provider Model 概要 ASP.NET 2.0 Provider Model 概要 Agenda ASP.NET 2.0 Provider Model とは カスタムプロバイダの実装 まとめ ASP.NET 2.0 Provider Model とは ASP.NET 2.0 のインフラストラクチャ データストアへのアクセスをアプリケーションロジックから分離 データストアの変更に柔軟に対応 Strategy パターン デザインパターンによる意識の共通化

More information

Prog1_10th

Prog1_10th 2014 年 6 月 19 日 ( 木 ) 実施 例外処理 Java 言語では, 作成したプログラムを実行する際に, 記述した処理が想定しない事態によって実行できなくなる場合を例外と呼び, その例外への対処, 即ち例外処理が求められる 例外処理を行うための try 文の一般形は次のようになる 例外を発生させる可能性のある処理 catch( 例外のクラス名 1 変数 1 ) 例外に対処する処理 1 catch(

More information

構造体

構造体 構造体 構造体を取り扱うには System.Runtime.InteropServices 名前空間をインポートして置くと便利で有る Imports System.Runtime.InteropServices using System.Runtime.InteropServices; C# ユーザー定義型 (Type) と構造体 (Structure) 6.0 のユーザー定義型 (Type) を.NET

More information

GEC-Java

GEC-Java Copyright (C) Junko Shirogane, Waseda University 2019, All rights reserved. 1 プログラミング初級 (Java) 第 14 回継承 白銀純子 第 14 回の内容 継承 オーバーライド ポリモーフィズム Copyright (C) Junko Shirogane, Waseda University 2019, All rights

More information

データベース1

データベース1 データベース操作プログラム Ⅲ VB20 プログラムの概要 ACCESS 等のデータベースの操作に不慣れな者でも 簡単に使用する事が出来るようなデータベースアプリケーションを目指します 今回は データグリッドをクリックする事に依り 其のレコードのフィールドデータを個別にテキストボックスやコンボボックスに表示するを付加する 此の際 カテゴリ ID や著者 ID の様に人間に解り難いデータ形式では無く

More information

Secure iNetSuite for .NET 4.0Jの新仕様について

Secure iNetSuite for .NET 4.0Jの新仕様について Secure inetsuite for.net 4.0J の新仕様について グレープシティ株式会社 2013 年 8 月初版 メール送受信とファイル転送機能を実現する通信コンポーネント Secure inet Suite の通信モードの仕様が新しくなりました 本資料では従来のバージョンとの違いとメリットをコードを使って詳しく解説します はじめに 2013 年 9 月発売の Secure FTP for.net

More information

Prog1_6th

Prog1_6th 2019 年 10 月 31 日 ( 木 ) 実施配列同種のデータ型を有する複数のデータ ( 要素 ) を番号付けして, ひとまとまりの対象として扱うものを配列と呼ぶ 要素 point[0] point[1] point[2] point[3] point[4] 配列 配列の取り扱いに関して, 次のような特徴がある 1. プログラム中で用いる配列変数 ( 配列の本体を参照する参照型の変数 ) は必ず宣言しておく

More information

C 資料 電脳梁山泊烏賊塾 キャスト C++ のキャスト 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する C++ でのキャスト

C 資料 電脳梁山泊烏賊塾 キャスト C++ のキャスト 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する C++ でのキャスト キャスト C++ のキャスト 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する C++ でのキャスト C++ では其のキャストを 3 種類に分類して居る 静的な普通の型変換 (static_cast) 先ずは 1 つ目は 静的な普通の型変換で有る

More information

正規表現概要

正規表現概要 正規表現 正規表現の概要 此処では.NET Framework の正規表現に付いて 主に正規表現パターンに付いて 基本を極く簡単に説明する 猶.NET Framework の正規表現は Perl5 の正規表現に対応する様にデザインされて居るので Perl の正規表現を理解して居れば問題は無い ( 勿論 理解して居なくても問題は無い ) 正規表現で出来る事 正規表現は 文字列を検索する為に使用する 正規表現を使うと

More information

XML(DOMガイド)

XML(DOMガイド) XML DOM ガイド 初心者の為の XML DOM ガイド イントロダクション 本稿は XML(eXtensible Markup Language) 形式のドキュメントからデータを受け取ろうと仕て居る Microsoft Visual Basic の開発者を対象と仕て居る 此処では XML ドキュメントから情報を取得し 其のデータを Visual Basic のソリューションに統合する方法を説明する

More information

アセンブラ C# で作られたプログラムをデコンパイル デコンパイルとは 大雑把に言うと コンパイルされたプログラム (exe dll 等 ) から 元のコードを復元する行為の事で有る 特に C# や Java の様に中間言語に翻訳された状態でコンパイルされる様な言語の場合は元のコードに可成り忠実に復

アセンブラ C# で作られたプログラムをデコンパイル デコンパイルとは 大雑把に言うと コンパイルされたプログラム (exe dll 等 ) から 元のコードを復元する行為の事で有る 特に C# や Java の様に中間言語に翻訳された状態でコンパイルされる様な言語の場合は元のコードに可成り忠実に復 アセンブラ C# で作られたプログラムをデコンパイル デコンパイルとは 大雑把に言うと コンパイルされたプログラム (exe dll 等 ) から 元のコードを復元する行為の事で有る 特に C# や Java の様に中間言語に翻訳された状態でコンパイルされる様な言語の場合は元のコードに可成り忠実に復元される 本稿では C# に限らず.NET に関わる言語全般のデコンパイルをする方法を紹介する デコンパイルに依るリバースエンジニアリングが禁止されて居るアプリケーションには使用しない様にしなければ成らない

More information

データベース1

データベース1 データベース操作プログラム Ⅰ VB8 プログラムの概要 データベースプログラムを手軽に作成する方法としては Access のフォーム機能を用いる事が 先ず考えられます ウィザードも充実しており 操作を覚えれば簡単に作成する事が出来ます 其れでは VB でデータベースプログラムを作るメリットは何んでしょうか 1 つは Access のフォーム機能に比べ コントロールが充実している事 より自由なデザインが可能です

More information

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に

C 資料 電脳梁山泊烏賊塾 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に 構造体 C++ の構造体 初めに 此処では Visual Studio 2017 を起動し 新しいプロジェクトで Visual C++ の Windows デスクトップを選択し Windows コンソールアプリケーションを作成する 定義と変数宣言 C++ に於いては 構造体を定義は下記の様に記述する ( 末尾のセミコロンを忘れない様に ) strust Point int x; int y; 上記の様に定義すれば

More information

テキストファイルの入出力1

テキストファイルの入出力1 テキストファイルの入出力 1 0. 今回の目的前回までは 2 回にわたって繰り返しについて学んできました 今回からテキストファイルの入出力について学ぶことにします 1. テキストファイルへの出力 1.1 テキストファイルについてテキストファイルとは コンピュータで扱うことが出来るファイルの中で最も基本的なファイルであり どの様な OS でもサポートされているファイル形式です Windows においては

More information

基礎計算機演習 実習課題No6

基礎計算機演習 実習課題No6 実習課題 No.6 課題は 3 題ある. 課題 6-1 時間内提出 次の実行例のように, 名簿を出力するプログラムをつくりたい. このプログラムでは, まず人数をたずね, 次にその人数分の名前を入力し, それを再びコンソールに出力する. なお, 空の名前が入力されても終了せずにその欄は空欄で出力するものとする. 注意とヒント この課題では,string 型の配列をまず宣言する. このとき, 配列の要素はちょうど名簿に入力する人数分だけを宣言すること

More information

TestDesign for Web

TestDesign for Web 発行日 2012/6/21 発行元 株式会社アープ 本書は Web でのテスト自動化における Test Design の一連の操作方法まとめたものです Test Design のメニューの説明やより詳細な使い方については ユーザーズガイド を参照してください 目次 1. はじめに... 1 2. 環境構築... 2 2.1. Selenium のサイトについて... 2 2.2. Selenium

More information

VB実用⑦ エクセル操作Ⅰ

VB実用⑦ エクセル操作Ⅰ VB でエクセル操作 Ⅰ VB 2005 7 プログラムの概要 事務処理に於いて Microsoft 社のスプレッドシートソフトで有るエクセルは データベースソフトで有るアクセスと共に 業界標準 (De Facto Standard) で有ると謂う事が出来る 此処では 其のエクセルを Visual Basic から操作する方法を 重点的に学ぶ 今回は Visual Basic でエクセルを利用する基本と成るオブジェクト生成と

More information

Microsoft Word - IPC-intro.docx

Microsoft Word - IPC-intro.docx プロセス間通信 ( サーバー クライアント ) について同じコンピュータで動いている複数のプロセス ( 実行中のプログラムのこと ) もしくは異なるコンピュータで動いている複数のプロセスの間の通信 ( 情報の受け渡し ) のための方法ここでは 一つのプロセスをサーバー 他のプロセスをクライアントとする方法について述べる サーバーは文字通り クライアントからの要求を受けて何らかの仕事をする 受け のプロセス

More information

チャットプログラム

チャットプログラム チャット C# 2005 5 プログラムの概要 Winsock コントロールを使用すると リモートコンピュータに接続し データを交換出来る事を利用して チャット ( 通信雑談システム ) を作成する サーバー クライアント共に 背景色が黄色のテキストボックスに必要項目を入力し 設定ボタンをクリックすると 通信が確立し チャットを開始する事が出来る 送信用テキストボックスに送信文を入力して送信ボタンをクリックすると

More information

データベース1

データベース1 データベース操作プログラム Ⅱ VB9 プログラムの概要 オブジェクト型の変数宣言を行い コード上で データベースに接続し SQL を発行する 今回は オブジェクト型の変数宣言に依り データベースと接続する為のオブジェクト 及び 検索文を発行した際にデータを格納するオブジェクトを コード上で生成してデータベースに接続し 各レコードのフィールド情報を取得して 其れをコンボボックスの項目に追加する 此れに依り

More information

承 認

承 認 取扱説明書 2012/7/26 岩通計測株式会社技術部 1. 概観 編 2. 機能 DM に新しく書込れた < 指定されたスクリーン > の指定名称の ch の波形を波形領域に格納します 確認のために 所定の csv ファイルに格納します VB.net 版では

More information

Microsoft PowerPoint ppt

Microsoft PowerPoint ppt 独習 Java ( 第 3 版 ) 6.7 変数の修飾子 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 Object クラスと Class クラス 6.7 変数の修飾子 (1/3) 変数宣言の直前に指定できる修飾子 全部で 7 種類ある キーワード final private protected public static transient volatile 意味定数として使える変数同じクラスのコードからしかアクセスできない変数サブクラスまたは同じパッケージ内のコードからしかアクセスできない変数他のクラスからアクセスできる変数インスタンス変数ではない変数クラスの永続的な状態の一部ではない変数不意に値が変更されることがある変数

More information

プログラミング基礎I(再)

プログラミング基礎I(再) 山元進 クラスとは クラスの宣言 オブジェクトの作成 クラスのメンバー フィールド 変数 配列 メソッド メソッドとは メソッドの引数 戻り値 変数の型を拡張したもの 例えば車のデータベース 車のメーカー 車種 登録番号などのデータ データベースの操作 ( 新規データのボタンなど ) プログラムで使う部品の仕様書 そのクラスのオブジェクトを作ると初めて部品になる 継承 などの仕組みにより カスタマイズが安全

More information

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10

CashDrawer ライブラリ API 仕様書 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev / 10 2014/07/09 CashDrawer ライブラリ API 仕様書 Rev. 00.0.04 1 / 10 目次 1. ファイル構成... 3 2. 環境 3 2.1. 動作環境 OS... 3 2.2. コンパイル時の注意点... 3 2.3. USB ドライバ... 3 3. 関数一覧... 4 3.1. USB 接続確認処理 (CD_checkConnect CD_checkConnect)

More information

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版   Copyright 2018 NTT DATA INTRAMART CORPORATION 1 Top 目次 1. 改訂情報 2. はじめに 2.1. 本書の目的 2.2. 対象読者 2.3. サンプルコードについて 2.4. 本書の構成 3. 辞書項目 API 3.1. 最新バージョン 3.1.1. 最新バージョンの辞書を取得する 3.2. 辞書項目 3.2.1. 辞書項目を取得する 3.2.2.

More information

64bit環境で32bitコンポーネントの利用

64bit環境で32bitコンポーネントの利用 64bit 環境 64bit 環境で 32bit コンポーネントの利用 Windows 7 や 8 の出現で 愈々 64bit 環境も普及し始めて来た 64bit 環境に於いては 64bit 用に最適化された 64bit コンポーネントを使用するのが本筋で有ろうが 64bit 環境に於いても 32bit コンポーネントを使用し度い場合が有る 過去の遺物 ( レガシ ) と仕て切り捨てるのではなく 良い物は良い物と仕て有効利用すると謂う観点から

More information

グラフィックス 目次

グラフィックス 目次 WPF チュートリアル Microsoft Expression Blend を使用してボタンを作成する 此のチュートリアルでは WPF のカスタマイズされたボタンを Microsoft Expression Blend を使用して作成する手順に付いて説明する Microsoft Expression Blend の具体的な動作は Extensible Application Markup Language(XAML)

More information

相性占いプログラム

相性占いプログラム 相性占いプログラム VB 2005 1 プログラムの概要 画面上で 男女夫々れの誕生日の月日と血液型をコンボボックスより選択した後 占うボタンをクリックする 相性とアドバイス & ポイントは 血液型と星座の位置に依り 予め或る占術法に基づき作成されたデータをファイルより読み込んで配列に記憶させ 誕生日と血液型に依り算出された評価値に該当するデータを表示する 猶 必要な入力が行われて居ない場合には 警告音を鳴らして

More information

コードページ

コードページ Encoding クラス 文字エンコーディングを表す 名前空間 :System.Text アセンブリ :mscorlib (mscorlib.dll 内 ) 解説 エンコーディングは Unicode 文字のセットをバイトシーケンスに変換するプロセスで有る デコードは 其の逆に成る エンコードされたバイトシーケンスを Unicode 文字のセットに変換するプロセスで有る Unicode Standard

More information

VB.NET解説

VB.NET解説 Visual Basic.NET データベース編 目次 ADO.NET の概要... 2 ADO.NET と ADO... 2 ADO.NET の仕組み... 4 ADO.NET の特徴... 7 データアクセスの基本... 8 Windows アプリケーションの開発手順... 8 データ接続の作成... 9 データアダプタとコネクションの作成...10 データセットの作成...14 データアクセスの利用...21

More information

相性占いプログラム

相性占いプログラム 相性占いプログラム VB1 プログラムの概要 画面上で 男女夫々れの誕生日の月日と血液型をコンボボックスより選択した後 占うボタンをクリックします 相性とアドバイス & ポイントは 血液型と星座の位置に依り 予め或る占術法に基づき作成されたデータをファイルより読み込んで配列に記憶させ 誕生日と血液型に依り算出された評価値に該当するデータを表示します 猶 必要な入力が行われて居ない場合には 警告音を鳴らして

More information

MS Office オートメーション

MS Office オートメーション MS Office オートメーション Excel マクロのキックに依る印刷 Access では CSV や Excel 形式でのファイル保存が可能で有る 此れ利用して Excel のマクロを装備したシートに読み込んでマクロを実行し 印刷する方法を紹介する 一般的には, 単成るテキストファイルで有る CSV の方が Excel 形式ファイルより汎用性が有るが マクロで自動実行した時には が行頭に付いて居るセルを文字列型と仕て認識して仕舞うと謂う問題が発生する為

More information

多言語ドメイン名の実装 mdnkit 石曽根信 ( 株 ) SRA 2001/12/04 日本語ドメイン名解説 / mdnkit 1 mdnkit 多言語ドメイン名を扱うためのツールキット 正規化 エンコード変換等を提供するライブラリとコマンド 既存アプリケーシ

多言語ドメイン名の実装 mdnkit 石曽根信 ( 株 ) SRA 2001/12/04 日本語ドメイン名解説 / mdnkit 1 mdnkit 多言語ドメイン名を扱うためのツールキット 正規化 エンコード変換等を提供するライブラリとコマンド 既存アプリケーシ 多言語ドメイン名の実装 mdnkit 石曽根信 ( 株 ) SRA ishisone@sra.co.jp 2001/12/04 日本語ドメイン名解説 / mdnkit 1 mdnkit 多言語ドメイン名を扱うためのツールキット 正規化 エンコード変換等を提供するライブラリとコマンド 既存アプリケーションを多言語ドメイン対応させるためのツール群 フリーソフトウェア 2001/12/04 日本語ドメイン名解説

More information

Java の ConcurrentHashMap における同期化 バッドケースとその対処法 2013 年 9 月湊隆行 1. はじめに表 1.1 に示すように Java の Collections Framework には 3 つの世代があります バージョン 1.0 から存在するレガシー API バ

Java の ConcurrentHashMap における同期化 バッドケースとその対処法 2013 年 9 月湊隆行 1. はじめに表 1.1 に示すように Java の Collections Framework には 3 つの世代があります バージョン 1.0 から存在するレガシー API バ Java の ConcurrentHashMap における同期化 バッドケースとその対処法 2013 年 9 月湊隆行 1. はじめに表 1.1 に示すように Java の Collections Framework には 3 つの世代があります バージョン 1.0 から存在するレガシー API バージョン 1.2 で追加されたロック機構を使わない API および バージョン 5.0 で追加された同期化コストが低い

More information

万年暦プログラム

万年暦プログラム 暦カルキュレータ VB8 プログラムの概要 テキストボックスで指定した年月日より オプションボタンで日付が選択されて居る場合は 何年 又は 何箇月 又は 何日 又は 何週後 又は 前の日付を求める 亦 オプションボタンで日数が選択されて居る場合は 更にテキストボックスで指定した年月日迄の日数を求める オプションボタンの選択状況に依り 入力欄の有効 無効を切り替えると共に コマンドボタンのキャプションを書き換えて

More information

占領双六ゲーム

占領双六ゲーム 占領双六ゲーム VB 2005 9 プログラムの概要 赤と青の 2 者が順番にサイコロを振り 出た目の数だけ駒を進めて行き 停止したマス目を自分の色に塗り潰して 自分の陣地に出来ると謂う 所有る陣取りゲームを作成する マス目は最初に其のマスに停止した方の陣地となり 既に孰れかの色に塗り潰されて居るマスに 後から別の駒が停止しても 陣地の占領者が変わる事は無い 総てのマス目が孰れかの色に塗り潰されゝばゲームは終了し

More information

ICONファイルフォーマット

ICONファイルフォーマット グラフィックス エンコーダパラメータを指定した画像の保存 概要 Image クラスの Save メソッドには イメージコーデック情報とエンコーダパラメータを指定して画像を保存するオーバーロードが有る 此れを利用すると 様々な画像形式で色々のオプションを指定して画像を保存する事が出来る Public Sub Save ( _ filename As String, _ encoder As ImageCodecInfo,

More information

Prog2_15th

Prog2_15th 2019 年 7 月 25 日 ( 木 ) 実施メニューメニューバーとコンテクストメニュー Visual C# では, メニューはコントロールの一つとして扱われ, フォームアプリケーションの上部に配置されるメニューバーと, コントロール上でマウスを右クリックすると表示されるコンテクストメニューとに対応している これ等は選択するとメニューアイテムのリストが表示されるプルダウンメニューと呼ばれる形式に従う

More information

- i - org.t_engine.tenet.core.coreerrormessageexception org.t_engine.tenet.core Class CoreErrorMessageException java.lang.object +-java.lang.throwable +-java.lang.exception +-org.t_engine.tenet.core.coreexception

More information

UIOUSBCOM.DLLコマンドリファレンス

UIOUSBCOM.DLLコマンドリファレンス UIOUSBCOM.DLL UIOUSBCOM.DLL Command Reference Rev A.1.0 2008/11/24 オールブルーシステム (All Blue System) ウェブページ : www.allbluesystem.com コンタクト :contact@allbluesystem.com 1 このマニュアルについて...3 1.1 著作権および登録商標...3 1.2

More information

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 ゲームプログラミング スプライト スプライト Pygame では pygame.sprite を用いる事でスプライトの管理 描画 衝突判定等を簡単に行う事が出来る 此れを利用してキャラクター操作に関する各種機能をスプライトクラスとして 1 個

PYTHON 資料 電脳梁山泊烏賊塾 PYTHON 入門 ゲームプログラミング スプライト スプライト Pygame では pygame.sprite を用いる事でスプライトの管理 描画 衝突判定等を簡単に行う事が出来る 此れを利用してキャラクター操作に関する各種機能をスプライトクラスとして 1 個 PYTHON 入門 ゲームプログラミング スプライト スプライト Pygame では pygame.sprite を用いる事でスプライトの管理 描画 衝突判定等を簡単に行う事が出来る 此れを利用してキャラクター操作に関する各種機能をスプライトクラスとして 1 個に纏め 複数のキャラクターを扱い易くしたコードを 下記に示す pygame.sprite.sprite. init (self) self.img

More information

回文作成支援プログラム

回文作成支援プログラム 回文作成支援プログラム VB 2005 2 プログラムの概要 原文を 1 字入力する度に 其の回文が順次表示される 即ち AB と入力すると ABA と表示され ABC と入力すると ABCBA と表示される 亦 消去ボタンをクリックすると 原文 及び 回文を消去する事も出来る 終了ボタンをクリックすると プログラムをメモリから消去して終了する 今回の課題項目 単純変数の宣言 (Dim) Windows

More information

スケジューリングソルバScNurse

スケジューリングソルバScNurse スケジューリングソルバ ScNurse Software Development Kit for Socket Interface Technical View. 2016.Aug.5 菅原システムズ 評価開発環境 制約クラス シリアライズ (problem.json) ソケットで送る 実行エンジン GUI C# ソースソケットで解受け取り 1. スケジュールナース Ver2 相当の GUI ソース

More information

インベーダープログラム

インベーダープログラム インベーダーゲーム VB 2005 5 プログラムの概要 テレビゲームの流行の魁と成る懐かしのゲーム インベーダー を作成する 先ず FIGHT!! ボタンをクリックすると インベーダーが左右に移動し乍ら 降下して来るので 自機を左右のカーソルキーで移動させ スペースキーでミサイルを発射する インベーダーが 最終ライン迄 降下して 侵略される前に 総てのインベーダーを撃墜しなければ ゲームは終了する

More information

チャットプログラム

チャットプログラム チャット VB 2005 5 プログラムの概要 Winsock コントロールを使用すると リモートコンピュータに接続し データを交換出来る事を利用して チャット ( 通信雑談システム ) を作成する サーバー クライアント共に 背景色が黄色のテキストボックスに必要項目を入力し 設定ボタンをクリックすると 通信が確立し チャットを開始する事が出来る 送信用テキストボックスに送信文を入力して送信ボタンをクリックすると

More information

Android プログラム ガイド

Android プログラム ガイド モバイルプリンター Android モジュールプログラムガイド ESC/POS, CPCL Ver. 1.00 更新履歴 日付 バージョン 対象 SDK 履歴 2012/11/29 0.08 新規 2014/03/18 1.00 1.064 USB インターフェース対応 1 1. 目次 Android モジュールプログラムガイド... 0 更新履歴... 1 1. 目次... 2 2. はじめに...

More information

回文作成支援プログラム

回文作成支援プログラム 電光掲示板プログラム VB 2005 1 プログラムの概要 掲示文を入力し 表示開始ボタンをクリックすると 入力した掲示文が 上部の表示域に 右から左へ流れる様に表示される 亦 表示停止ボタンをクリックすると 掲示文の動きが停止する 終了ボタンをクリックすると タイマーを停止し プログラムをメモリから消去して終了する 今回の課題項目 単純変数の宣言 (Private) Windows フォームコントロールの利用

More information

オブジェクト指向プログラミング・同演習 5月21日演習課題

オブジェクト指向プログラミング・同演習 5月21日演習課題 オブジェクト指向プログラミング 同演習 5 月 21 日演習課題 問題 1 配列の例外処理例外が発生する可能性のある処理を try で囲み その後に catch で例外を捕捉します 例外処理の終了処理として finally が行われます これは書かなくて自動的に行われます 提出課題 1 (Kadai052301.java) 以下のプログラムは例外処理をしていない ArrayIndexOutOfBoundsException

More information

Socketクラス

Socketクラス 正規表現 正規表現の基本 此処では.NET Framework の正規表現に付いて基本を極く簡単に ( 主に正規表現パターンに付いて ) 説明する 猶.NET Framework の正規表現は Perl5 の正規表現に対応する様にデザインされて居ると謂う事なので Perl の正規表現を理解して居れば問題無い 猶 正規表現テストツール (RegexTest.exe) を使って正規表現のテストを行う事が出来るので

More information

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String 目次 1.SqlCtl クラスリファレンス 2 (1)Connect() メソッド 2 (2)DisConnect() メソッド 3 (3)Commit() メソッド 3 (4)Rollback() メソッド 4 2.SqlStm クラスリファレンス 5 (1)Prepare() メソッド 5 (2)Execute() メソッド 6 (3)Release() メソッド 6 (4)Immediate()

More information

エクセル詳細 アドイン

エクセル詳細 アドイン Microsoft Excel 詳細 アドイン Excel アドインの作成 Excel アドインを作成するには ブックを作成し コード ユーザー設定ツールバー 及び メニュー項目を追加して Excel アドインファイルとして保存する 1. 新しいブックを作成してコードを追加し ユーザー設定ツールバー 又は メニューバーを作成する 2.[ ファイル ] メニューの [ プロパティ ] をクリックする

More information

1013  動的解析によるBOTコマンドの自動抽出

1013  動的解析によるBOTコマンドの自動抽出 動的解析による BOT コマンドの 自動抽出 Malware Workshop 2008 2008 年 10 月 10 日株式会社セキュアブレイン星澤裕二 岡田晃市郎 太刀川剛 背景と目的 背景 大量発生している BOT の感染を未然に防いだり 感染してしまった場合に被害を最小限に抑えたりするために BOT の挙動を短時間で知ることが重要 目的 短時間で BOT のすべての挙動を知りたい 感染活動だけでなく

More information

Java - Visual Editor

Java - Visual Editor Visual Editor で Swing アプリケーションを作成 Swing プログラミングに慣れて居ても ソースコード上丈で思い通りの GUI を作成するのは 可成り骨の折れる作業で有る Visual Editor を使用すれば 試行錯誤し乍ら 非常に簡単に GUI アプリケーションを作成する事が出来る 此処では JFrame を拡張して 簡単なアプリケーションを作成して観る事にする Java

More information