Triangle Project
Code Library
for Visual Basic


 トップページへ戻る
tps20050904.lzh / .net
正しいファイルパス文字列を取得する
大文字小文字を意識しないパス文字列を実際のパス文字列に変換する。
tps20050814.lzh / .net
クライアント毎に個別のスレッドを立ち上げるタイプでのサーバー。
UTF-8文字コードの取り扱いを実装。
tps20050731.lzh / .net
FTPで使用するデーターコネクション用ソケットの実験プロジェクト。
リッスンタイムアウト、コネクトタイムアウト、ファイル転送タイムアウト、転送データー量の制御(バイト/秒)、レジューム対応,を組み込み。
テキストモードでは、
保存テキストファイルの文字コードを判定して任意の文字コードにて送信する、
任意の文字コードにて受信し、任意の文字コードにてテキスト保存する機能を実装。
tps20050718.lzh / .net
BinaryFirstInFirstOut(FIFO)
バイトデータを蓄積する。バイト配列からデーターを切り出す。
蓄積データーから指定バイト数を読み出し、先頭切り詰めを行う。
蓄積データーからCRLFを区切りとした文書一行分に相当するバイトデーターを読み出し、先頭切り詰めを行う。
tps20050703.lzh / .net
文字コードの判定とUTF8へ変換する時の長さの取得
<重要>この機能の重要なロジックは http://dobon.net/ 「メールマガジン dotnet43.txt 文字コードを判別するには?」に依存しています。必ず原典を参照してください。
ハードディスク上のファイルをネットワーク上にUTF-8コードで送出する場合に必要な情報を入手する為にこのルーチンを作成。
tps20050619.lzh / .net
クライアント毎に個別のスレッドを立ち上げるタイプでのサーバー。
最大サービス数の設定項目をコードに反映。タイムスタンプのUTC表示設定項目をコードに反映。Interrupt Process(IP)信号+Synch(DM)信号に対応仮想ファイルシステムのモニター画面を手直し。
tps20050607.lzh / .net
文字コード関連の検証プロジェクト
デフォルトエンコーディングを調べる、'システムが、リトル エンディアンかビッグ エンディアンかを調べる、文字コード番号を調べる、コードを変換する、各国文字の表示、文字コードを指定して読み取る、ファイルの文字コードを変換する、ディレクトリー・ファイル名に各国語を使う。
tps20050530.lzh / .net
バイトデータを操作するユーティリティー
バイトデーターをビット表示する、バイトデーターのビットの並びを反転する、を追加。
tps20050522.lzh / .net
バイトデータを操作するユーティリティー
バイトデータを蓄積する、バイト配列からデーターを切り出す。
バイト配列をバッキング ストアとして使用する、MemoryStream クラスをバッキング ストアとして使用する。
tps20050429.lzh / .net
バイトデータを操作するユーティリティー。
バイトデータを蓄積する、蓄積データのクリア、蓄積データに指定したパターンが含まれているか、二つのバイト配列を結合する、バイト配列からデーターを切り出す。
tps20050417.lzh / .net
設定画面の手直し
tps20050410.lzh / .net
1,000コネクションまでの負荷テストを実施.。
tps20050321.lzh / .net
MLST、MLSD に対応。 .....したつもり。
tps20050313.lzh / .net
レジュームに対応。 .....したつもり。
tps20050227.lzh / .net
クライアント毎に個別のスレッドを立ち上げるタイプでのサーバー。FTPサーバーの基本機能を組み込み、かろうじて動く程度です。細かな検証、負荷テストは未実施、拡張コマンド未実装です。
tps20050203.lzh / .net
FTPで使用するデーターコネクション用ソケットの実験プロジェクト。リッスンタイムアウト、コネクトタイムアウト、ファイル転送タイムアウト、転送データー量の制御(バイト/秒)、レジューム対応を組み込み。
tps20041219.lzh / .net
クライアント毎に個別のスレッドを立ち上げるタイプでのサーバーモデル。セッション管理テーブル、メンバー管理テーブル、アイドルタイムアウトを組み込み。メンバー管理UI,サーバー設定UIを追加。
負荷テスト用のプロジェクトを同梱。テストはクライアントを順番に接続して行き、全てが接続を完了すると、一斉に送受信を行う方法でテスト。クライアントの数として1000まで挙動を確認した。
tps20041107.lzh / .net
クライアント毎に個別のスレッドを立ち上げるタイプでのサーバーモデル。セッション管理テーブル、メンバー管理テーブル、アイドルタイムアウトを組み込み。
負荷テスト用のプロジェクトを同梱。テストはクライアントを順番に接続して行き、全てが接続を完了すると、一斉に送受信を行う方法でテスト。クライアントの数として1000まで挙動を確認した。
tps20041011.lzh / .net
クライアント毎に個別のスレッドを立ち上げるタイプでのサーバーモデル。
セッション管理テーブルを追加、アイドルタイムアウトを追加。
負荷テスト用のプロジェクトを同梱。
テストはクライアントを順番に接続して行き、全てが接続を完了すると、一斉に送受信を行う方法でテスト。クライアントの数として1000まで挙動を確認した。
tps20040919.lzh / .net
ArrayListの実験コード。ArrayListの操作関数を共有メッソドとしてクラスにパッケージした。更に共有メッソドにはMonitorによるロック機構を組み込み。
'テストはスレッドを多数立ち上げ一斉に共有メソッドにアクセスするようにした。800スレッドでの一斉アクセスまでテスト確認した。
tps20040904.lzh / .net
クライアント毎に個別のスレッドを立ち上げるタイプでのサーバーモデル。構成はエコーサーバーとし、ソケットは同期・非同期入り混ぜて使用している。同期送信と非同期送信で処理時間が大幅に違う現象の検討プロジェクト。

同期送信で処理時間 0ms〜47msである。
非同期送信でコールバックされるまでに516ms〜4700ms掛掛かる。

負荷テスト用のプロジェクトを同梱。テストはクライアントを順番に接続して行き、全てが接続を完了すると、一斉に送受信を行う方法でテスト。クライアントの数として1000まで挙動を確認した。
tps20040829.lzh / .net
クライアント毎に個別のスレッドを立ち上げるタイプでのサーバーモデル。
構成はエコーサーバーとし、ソケットは同期・非同期入り混ぜて使用している。
負荷テスト用のプロジェクトを同梱。テストはクライアントを順番に接続して行き、全てが接続を完了すると、一斉に送受信を行う方法でテスト。クライアントの数として1000まで作動を確認した。
tps20040821.lzh / .net
MSDNの"非同期サーバー ソケットの例"に有るサンプルコードで、どの程度のパフォーマンスかをテストするプロジェクト。コードはMSDNそのままである。
負荷テスト用のプロジェクトを同梱。
tps20040613.lzh / .net
非同期サーバーソケットの実験コード。
サーバーのスケルトンモデルと成る。構造を一部見直し。<追記:一部不具合あり>
tps20040606.lzh / .net
非同期サーバーソケットの実験コード。
サーバーのスケルトンモデルと成る。構造を大幅に変更。チャットクライアントとの組み合わせでテスト
tps20040530.lzh / .net
非同期ソケットによるシングルサービスソケットの実験コード。
チャットサーバーとクライアントへの実装実験。ステータス情報の扱いを少し変更。
tps20040529.lzh / .net
非同期ソケットによるファイル転送の実験コード。
ソケットは非同期作動、ファイルアクセスは同期アクセスです。ファイルアクセスにタイムアウトを追加。
tps20040509.lzh / .net
FTPサーバーを構築するベース
メインフォーム・メンバーモジュール・ファイルモジュール・設定モジュールを結合した。この上にFTPプロトコルを構築して行く。
tpsFileUtility03.lzh / .net
FTPサービスに必要なファイルのリストアップモジュール。ディレクトリーのマウントを実験。
仮想ファイルシステム(VFS : VirtualFileSystem)の極々簡易版。
tpsFileUtility02.lzh / .net
FTPサービスに必要なファイルのリストアップモジュール。指定したディレクトリー以下のホルダー・ファイルを配列にリストアップする。
一層取得と再帰取得の両方に対応、通常の形式とFTPの形式の両方に対応。FTPで使用するテキスト形式でのリスト出力とディレクトリチェンジを追加。
tpsMultiThreadr02.lzh / .net
マルチスレッド 基本実験プロジェクト
配列管理でのスレッド作成、スレッド間の呼び出しを実験。待ち行列(FIFO)、タイマーファイヤー、MUTEXを実験実装。
一般にスレッドは関数の呼び出しで作成され、関数の終了により消滅するが、このサンプルはフォームを作成している為、状態を保持している。
tpsRandomizer01.lzh / .net
乱数発生ルーチンの実験。暗号化に使用する厳密なランダムバイトを作成する方法と通常の乱数発生方法をビジュアルにプロットし比較した。
tpsTextReadWrite01.lzh / .net
テキストデーター(CSV形式)からの読み込みと書き出しの実験。
サーバーの各種設定を行うユーザーインターフェースにて実験。
tps20040118.lzh / .net
非同期ソケットによるコネクション終了シーケンスの実験コード。
ソケットの参考書に有る、コネクション終了シーケンス(正しくクローズする)を実験する為に各ステップを単独で操作出来る様にし、Toolソフトで各ソケット・パケットの状態を確認した。参考書に有るシーケンスと少し違った結果であるがテスト環境が原因の可能性あり。
tpsFileUtility01.lzh / .net
FTPサービスに必要なファイルのリストアップモジュール。
指定したディレクトリー以下のホルダー・ファイルを配列にリストアップする。
tps20040104.lzh / .net
非同期ソケットによるファイル転送の実験コード。
シングルサービスのソケットで、ファイル転送専用です。ソケットは非同期作動、ファイルアクセスは同期アクセスです。ファイルアクセスはSystem.IO.FileStreamを同期モードで使用した。
転送の開始は接続の完了、転送の完了はSender側のクローズ。
tpsFileAccess01.lzh / .net
System.IO.FileStream を使用したファイルアクセスの実験プロジェクト。3種類の小さなプロジェクトのパッケージ
1.ファイルを排他処理してオープン
2.ファイルへ同期アクセスして、転送
3.ファイルへ非同期アクセスして、転送
tps20031214.lzh / .net
非同期シングルソケットクラスの実験プロジェクト/.net
winSock.ocxと似た使い方が出来るように変更。
実証実験として、非同期シングルソケットを使用したチャットサーバーとクライアントへの実装実験。
tps20031207.lzh / .net
非同期サーバーソケットクラスの実験プロジェクト/.net
非同期サーバーソケットのサンプルソースコードと、チャットサーバーへの実装実験。
tps20031130.lzh / .net
非同期ソケットクラスの実験プロジェクト/.net
シングルの非同期ソケットのサンプルソースコード。 受信のルーチン見直し。
非同期ソケットを使用したチャットサーバー・クライアントにて実装実験。バイナリーデータは処理できません
tps20031124.lzh / .net
非同期ソケットクラスの実験プロジェクト/.net
シングルの非同期ソケットのサンプルソースコード。非同期ソケットを使用したチャットサーバー・クライアントにて実装実験。バイナリーデータは処理できません
tps20031122.lzh / .net
非同期クライアントソケットクラスの実験プロジェクト。
非同期ソケットを使用したチャットクライアントを作成。リスナー機能はありません。バイナリーデータは処理できません
tps20031116.lzh / .net
非同期ソケットクラスの実験プロジェクト、サーバー機能のみ、バイナリー未対応
非同期ソケットを使用したチャットサーバーを作成。
少し怪しい所もあるが今後の課題。
tpsMultiThreadr01.lzh / .net
マルチスレッド 基本実験プロジェクト
スレッドの動かし方と各スレッドで使用する変数の独立性を確認。
tpsClassTimer01.lzh / .net
.NET Framework Version 1.1 System.Threading.Timerを使用したタイマークラスの実装実験。
Hello World dotnet.lzh / .net
.net版 Hello World。
<01 コンソール版(Module), 02 コンソール版(Class), 03 フォームをコードで作成する, 04 予め作成されているフォームをクラスから呼び出す>
VirtualFileSystem04.lzh
パーミッションのロジックを組み込み。
VirtualFileSystem03.lzh
仮想ファイルシステムの骨格となる仮想ディレクトリの扱いに付いて実験。
ディレクトリーマウント、仮想ディレクトリファイルの作成、仮想と実際のディレクトリ相互変換の実験。
VirtualFileSystem02.lzh
ディレクトリーマウントのイメージをつかむ為の実験。
VirtualFileSystem01.lzh
VirtualFileSystemへの準備の為の実験プロジェクト。
Nodeを理解するために、TreeViewを使用して実験。
SharedMemory02.lzh
共有メモリーのサンプルプログラムのソースコード。セマフォによる排他処理を行っている。
FileSystemObject02.lzh
FileSystemObjectを使用したリスト,属性の取得,フォルダーの削除、ファイルの削除、ファイル・フォルダーの有無確認です。FileSystemObjectの実験はこれで終わりです。
FileSystemObject01.lzh
FileSystemObjectを使用したファイル操作のサンプルプログラムのソースコード。
今回はリストと属性の取得だけです。(課題:個々のファイル操作、仮想配列、メンバー管理との融合、バーチャルファイルシステム……、自分でも良く分からない)
tps20030427.lzh
***マルチスレッドで作成した一区切り版/VB6で作成した最終版:***
サイトの基本設定をするユーザインターフェースを見直し・修正。
メンバーとパーミッションの管理ポリシー作りが今後の課題
tps20030413.lzh
Winsock.ocxを使用した FTPサーバーのサンプルプログラムのソースコード。マルチスレッドで作動する。
メンバー管理を組み込み(基本的な項目のみ)。機能はシングルスレッドで作成した最終版と同等。
tps20030406.lzh
マルチスレッドで作動する。セッション管理を組み込み(基本的な項目のみ)。メンバー管理は実装していない。
細かな制御はこれから。
tps20030330.lzh
マルチスレッドへ移行した。(マルチスレッドで動いているだけの代物)
マネージャーモジュールにはサーバントモジュールの機能確認の為だけの機能を記述した。制御機能はこれからである。
tps20030323.lzh
マルチスレッドへ移行する為の前準備。(シングルスレッド)
細かな制限機能の組み込みを行なった。オマケとして、FTPでのチャット機能を実装した、本格的なサーバーでは不要。
tps20030316.lzh
FTPサーバーをマルチスレッドへ移行する前準備として、シングルスレッドにてコードの切り分けと配置の見通しを立てた。
svSkeleton03.lzh
サーバーのスケルトンモデル。 1対多のクライアントサーバーモデル。
セマフォ、待ち行列、タイマーファイヤー、システムトレーへの格納、二重起動防止、ユーザー定義型でのプロセス間参照渡しを実装。
相手プロセスいがタダ一個の場合セマフォを複数立てても意味が無い様に思うのでセマフォを二個から一個に変更した。
filelock01.lzh
ファイルアクセス制御の実験ソースコード。
マルチプロセス環境での複数タスクからハードディスク、及びファイルへの同時アクセスに関する考え方を整理した。
セマフォによる排他制御、VBでのオーソドックスなコーディングでの排他ロックを実験。
svSkeleton02.lzh
サーバーのスケルトンモデル
二重起動防止の追加、その他手直し。
svSkeleton01.lzh
サーバーのスケルトンモデル
アクティブXexe同士での相互参照による、マルチスレッド、マルチプロセスを実現。
セマフォ,待ち行列、タイマーファイヤー,システムトレーへの格納を組み込み。
multithread006.lzh
マルチプロセスからハードディスクへの同時アクセスが発生した場合の挙動確認のために実験した。
multithread004.lzh ,multithread005.lzh と機能は同じ。
multithread005.lzh
multithread004.lzh を少し改造、機能は同じ。
マルチスレッド・排他処理・イベント通知はこれで決まりか?
multithread004.lzh
マルチスレッド/マルチプロセスの実験ソースコード。
セマフォによる関数の多重呼び出しの排他処理を実験。
待ち行列とタイマーファイヤー?を使ってのイベント通知の実験。
tps20030105.lzh
***シングルスレッドで作成した最終版:***
FTPサーバーのシングルスレッドで作成した最終版サンプルソースコード。FTPプロトコルを理解するために作成した。
要件の全ては実装していないがFTPサーバーの基本は実現出来たと考える。
個人で使う分には使用可能と考えるが、多人数で同時アクセスすると問題が発生するかも知れない。この辺は次のマルチスレッドで解決するかも知れないと思う。
multithread003.lzh
マルチスレッドでのActiveX EXE 同士の相互参照の実験
タイマーファイヤー?を使ってのイベント通知の実験
systemtrays001.lzh
システムトレーの使い方確認の為の実験プロジェクト。
システムトレーにアイコンを登録、削除、変更、点滅、ダブルクリック、ポップアップメニューを確認。
multithread002.lzh
マルチスレッドでのActiveX EXE 同士の相互参照の実験
multithread001.lzh
アクティブX exe を使ってのマルチスレッドの実験プロジェクト
使い物に成るかどうかは今後の課題。
tps20021208.lzh
パッシブモード時、使用するポート番号に範囲の設定が出来るようにした。
tps20021201.lzh
基本設定(サイトプロファイル)のユーザーインターフェースを追加。
tps20021124.lzh
メンバー管理にテキストファイルでのデータベース化を行なった。
同時に、メンバー管理のユーザーインターフェースを作成した。
パスワードの自動発生ルーチンを組み込み。
tps20021117.lzh
ディレクトリ付きのファイル操作コマンドの上手く対応していなかったのを修正。
コマンド解析で使用する変数を全てセッションテーブルで管理する様に変更。
tps20021027.lzh
ファイルリストアップのルーチンを見直し。
ディレクトリ削除の作動不具合を見直し。
tps20021022.lzh
レスポンスの返し方を整理。
ファイルリストアップのルーチンを見直し。
tps20021006.lzh
FindFirstFile,FindNextFileを使用した ファイルのリストアップモジュール。
LIST,NLST,DIR、一層取得,再帰取得に対応。パターンマッチでのリストアップが可能。
FTPサーバーへ組み込んでのテストはしていない。使用前に充分テストする事。
tps20020923.lzh
Winsock.ocxを使用した FTPサーバーのサンプルプログラム。
シングルスレッドで作成、少人数へのサービスに対応。セッション管理、タイムアウトを組み込み。
作動確認は一種類のクライアントソフトでのみ実施、作動確認検証が今後の課題。
tps20020916.lzh
Winsock.ocxを使用した FTPサーバーのサンプルプログラム。
FTPプロトコルを理解するために作成した。シングルスレッドで作成。
少人数へのサービスに対応する為、セッション管理の考え方を組み込み。
tps20020908.lzh
Winsock.ocxを使用した FTPサーバーの基本プログラム。
FTPクライアントで必要とするであろうプロトコルを一様実装してみた。
シングルユーザー、シングルスレッドで作成、メンバー管理、パーミッション管理を実装。
tps20020908.lzh
Winsock.ocxを使用した FTPサーバーの基本プログラム。
FTPクライアントで必要とするであろうプロトコルを一様実装してみた。
シングルユーザー、シングルスレッドで作成、メンバー管理、パーミッション管理を実装。
tps20020901.lzh
Winsock.ocxを使用した FTPサーバーの基本プログラム。
FTPクライアントで必要とするであろうプロトコルを一様実装してみた。
シングルユーザー、シングルスレッドで作成、メンバー管理、パーミッション管理は行なっていない。
tps20020824.lzh
Winsock.ocxを使用した FTPサーバーの基本プログラム。
データー転送を理解するために作成した。
シングルユーザー、シングルスレッドで作成、プロトコルは最低を実装。
tps20020813.lzh
Winsock.ocxを使用した TCP/IP ファイル転送の基本プログラム。
送り側と受け側の両方のサンプルコード。バイナリー転送を実験。
TCP/IP でファイル転送を行なう基本を理解する為に作成した。
tps20020506.lzh
Winsock.ocxを使用した TCP/IP チャットのプログラム。サーバー側とクライアント側の両方のサンプルコード。
TCP/IP の基本を理解する為に作成した。
重 要:
各種参考資料、ウエブ上でのサンプルコードを参考に個人の理解を深める為、作動確認をする為に作成した実験のためのコードであり、他の著作権を侵害するものではありません。
万一、コードの部分的にでも著作権を主張される方がいらっしゃれば、その方の主張を尊重いたします。

コード全体としてはTriangle Projectが著作権の主張を致します。
皆さんが個人で参考にされる場合は自由にお使い下さい。
転載される場合はご連絡をお願いします。
Triangle Projectでは実行ファイルの配布は予定しておりません。全てコードのみの配布となります。

Triangle Project Sample Code の使用は使用する人の責任・リスクの元に行なって下さい。
Triangle Project Sample Code の使用に起因する有形無形対人対物を含むあらゆる事故に対してTriangle Projectは責任を持ちません。


 トップページへ戻る