Knowlbo/OCX

Windowsソケットインタフェースのシンプル＆ビジュアルモデル！

Version 2

はじめに

Knowlbo(R)/OCXシリーズ クイック ソケット Version2をお求めいただき誠にありがとうございます。

クイック ソケットは、Windowsソケットインタフェースをシンプル、かつビジュアルにモデル化した実用的なソケット通信コンポーネントです。

このヘルプ情報は、クイック ソケットのソフトウェア使用許諾権、サポート情報、使用方法などの各種ドキュメント、およびサンプルコードなどから構成されています。また、最新の製品情報や修正版、FAQなどについては、弊社ホームページにて公開されます。

登録商標など

Knowlbo(R)はナルボの登録商標です。

Microsoft、WindowsNT、Windows95、Windows98、Windows2000、Windows Me、Windows XP、Visual Basic、Visual C++は米国Microsoft Corporationの米国およびその他の国における登録商標です。

Delphi、C++Builderは米国Borland Corporationの米国およびその他の国における登録商標です。

その他記載されている会社名、製品名は各社の登録商標、または商標です。

なお、本マニュアルの記述については、特に記載がない限り、Visual Basic言語を対象としています。他の言語環境でご利用される場合は、お手数ですが対応の言語に置き換えてご利用下さい。


ソフトウェア使用許諾権について

ソフトウェア使用許諾契約

お客様がディスクのケースを開封するかまたはディスクのシールをはがした場合に、お客様はこの契約に同意してご利用いただけるものといたします。この契約に同意できない場合には、ご利用することはできません。

このソフトウエア使用許諾契約とディスクは、お客様が適法に使用許諾を受けたことの証しとなりますので、どちらも大切に保管してください。

適用

以下の条項は、お客様がこの契約書とともに入手された株式会社ナルボ（以下「弊社」といいます）のソフトウエア製品（コンピュータプログラムとマニュアルその他の関連資料を含み、以下「本製品」といいます）に適用します。

使用の許諾

（１）お客様は「ユーザ登録」に記載された担当者の管理下においてのみ本製品を使用できます。

（２）お客様は本製品をコンピュータネットワーク上で複数の使用者により使用することはできません。ただし、マニュアルその他にネットワーク対応製品である旨が記載されている製品はこの限りではありません。

（３）お客様はいかなる事由によろうとも本製品を譲渡、販売、転貸することはできません。

（４）本製品のパッケージに同一の機能を有し、形態の異なるディスクが複数入っていた場合、お客様はそのうちの一種類のディスクのみをご使用いただけます。お客様が残りのディスクを他のコンピュータで使用したり、他者に譲渡、販売、転貸することはできません。また、お客様のご要望に応じて弊社が本製品と同一の機能を有し、形態の異なるディスクをお客様に提供した場合も同様とします。


ユーザ登録について

弊社では、よりよい製品とサービスをお届けするために、お客様の情報を登録させていただきたく存じます。お手数ではございますが、弊社ホームページまたは「ユーザ登録FAX用紙」を印刷のうえ、必要事項をご記入のうえファックスにてお送りください。

ご登録いただきましたお客様には、製品やサービスについてのインフォメーションをお届けいたします。ご住所や電話番号など、ご登録内容に変更が生じた場合は弊社カスタマ･コミュニケーションズまでお知らせください。

ご登録のない場合、バージョンアップサービスやテクニカルサポートサービスをご提供できないことがございます。

カスタマ・コミュニケーションズのご案内

製品内容やユーザ登録についてのお問い合わせは、下記にて承ります。

カスタマ・コミュニケーションズ
電話番号 | 03-3361-7755 | 11:00～12:00 13:00～19:00 （月～金）
FAX番号 | 03-3361-7735 | 24時間受け付け
電子メールアドレス | knocx@knowlbo.co.jp |


ユーザ登録FAX用紙

ユーザ登録は、オンラインでWebページから行う方法と、当FAX用紙を印刷していただき、内容を明記の上、FAXにてお送りいただく方法があります。

FAX. 03-3361-7735 （株）ナルボ　カスタマコミュニケーションズ行

ユーザ登録項目 | 内容
製品名 | Knowlbo/OCX クイック ソケット Version2
シリアル№ |
登録キー |
登録形態 | □法人 □個人
法人名* |
所属部署名* |
役職名* |
ユーザ名 |
住所 | 〒
電話番号 | （ ） －
FAX番号 | （ ） －
電子メールアドレス |

※｢登録キー｣はバージョン情報ダイアログの Registration Key を記入してください。
※｢登録形態｣が法人の場合は、｢法人名*｣、｢所属部署名*｣、および｢役職名*｣も記入してください。

本製品購入のきっかけとなった媒体は何ですか

□雑誌記事　□雑誌広告　□DM　□展示会　□店頭　□知人の紹介
□ホームページ　□電子メール　□その他

クイック ソケットをご利用のコントロールコンテナは何ですか

□Visual Basic 5.0　□Visual Basic 6.0　□Visual C++ 5.0　□Visual C++ 6.0
□Delphi 6.0　□ C++Builder5.0

本製品ご購入の理由、ご意見、ご要望を教えてください


インストール／アンインストールについて

クイック ソケットVersion2は、次の環境でご使用いただけます。

基本ソフトウェア

Windows98 （日本語版）
Windows Me （日本語版）
WindowsNT4.0 （日本語版）
Windows2000 （日本語版）

コントロールコンテナ

Visual Basic 5.0/6.0 （日本語版）
Visual C++ 5.0/6.0 （日本語版）

Borland Delphi 4/5 （日本語版）

Borland C++Builder 4/5 （日本語版）

Internet Explorer 5（日本語版）

クイック ソケットのインストールは、製品ディスクに含まれているセットアッププログラム（SETUP.EXE）により可能です。セットアッププログラムは、次の様な構成でシステムディレクトリあるいは、ユーザ指定のディレクトリ下の"QuickSocketV2"ディレクトリにファイルをインストールします。

\<Windows Directory>\System

MFC42.DLL | MFCコアコードDLL(MBCS版)
MSVCRT.DLL | Cランタイム共有DLL
OLEPRO32.DLL | Microsoft OLEプロパティサポートDLL
OLEAUT32.DLL | ActiveXサポートDLL

\<User Directory>\QuickSocketV2

Readme.WRI | クイック ソケット 情報ドキュメントファイル
Setup.TXT | クイック ソケット インストールドキュメントファイル
KnSocket.OCX | クイック ソケット OCXファイル
KnSocket.LIC | クイック ソケット ライセンスファイル
KnSocket.CHM | クイック ソケット ヘルプファイル
KnSocket.DEP | クイック ソケット 依存ファイル
REGSVR32.EXE | コントロール登録（レジストリ）実行モジュール
Uninst.isu | アンインストール情報ファイル

\<User Directory>\QuickSocketV2\Samples for VB

クイック ソケット Visual Basic用サンプルプログラム

補足

製品インストール時に、WindowsディレクトリSystem配下にコピーするファイルは、ActiveXコントロールを使用する上で必要なOLEサポートDLLです。これらのファイルは、最新のファイルが既に存在する場合は、コピーされません。

インストールの手順

インストールは次の手順で行います。

旧バージョンのアンインストール

システムに旧バージョンのタイリング ボタンがインストールされている場合、旧バージョンをアンインストールする。

旧バージョンのアンインストールは、旧バージョンの製品ディスク内にあるSETUP.EXEで行います。アンインストールの手順につきましては、旧バージョンのディレクトリ内にある「SETUP.TXT」に記述されていますので、そちらをご参照ください。

クイック ソケット Version2のインストール

(１)クイック ソケット Version2のCD-ROMをドライブにセットします。

(２)クイック ソケット Version2のセットアップメニューが自動的に起動しますので、そこで「SETUP」をクリックすると、セットアップが開始されます。始まらない場合は、以下の手順を行ってください。

・コントロールパネルの【アプリケーションの登録と削除】を起動します。

・「アプリケーションの登録と削除のプロパティ」画面で【セットアップ】／【インストール】ボタンをクリックします。

・「フロッピーディスクまたはＣＤ－ＲＯＭからのセットアップ」の画面で、【次へ】ボタンをクリックします。

・セットアッププログラムの実行」画面のテキストボックスに D:\setup.exe（ＣＤ－ＲＯＭドライブがD:の場合）と表示されるので、【完了】ボタンをクリックします。ここまでの操作により、セットアッププログラムが起動されます。

(３)起動されたセットアッププログラムの「ようこそ」の画面で、【次へ】をクリックします。

(４)製品ライセンス契約の同意確認の画面になるので、【はい】をクリックします。

(５)インストール／アンインストールの選択画面になるので、【Install】ボタンをクリックした上で、【次へ】のボタンをクリックします。

(６)インストール先フォルダの選択画面が表示されるので、インストール先を選択し、【次へ】をクリックします。

(７)セットアップの方法を選択し、【次へ】をクリックします。

セットアップの方法は、３通りあります。

標準 | 最も一般的なインストールをします。 OCXファイル、ライセンスファイル、ヘルプファイル、サンプルプログラム、ＯＬＥサポートＤＬＬ群をインストールします。
コンパクト | 必要最小限のオプションでインストールを行います。 OCXファイル、ライセンスファイル、ヘルプファイルのみインストールします。
カスタム | ヘルプファイル、サンプルプログラム、ＯＬＥサポートＤＬＬ群のインストールを選択できます。

(８)プログラムフォルダ名を入力し、【次へ】をクリックします。(コンパクトを選択した場合、この手順は省略されます。)

(９)インストール情報の確認画面が表示されるので、【はい】／【次へ】をクリックします。

(１０)自動的にファイルがコピーされます。「インストール完了」ダイアログが表示されれば、インストールは完了です。Readmeファイルをすぐに読みたい場合は、【はい（Y）】ボタンをクリック、あとで読む場合は【いいえ(N)】ボタンをクリックして終了して下さい。

アンインストールの手順

アンインストールの手順につきましては、旧バージョンのディレクトリ内にある「SETUP.TXT」に記述されていますので、そちらをご参照ください。


Knowlbo/OCX

Windowsソケットインタフェースのシンプル＆ビジュアルモデル！

Version 2

(V2.5R0)

概要

クイック ソケット（KnSocket）コントロールは、Windowsソケット（WinSock）インタフェースをシンプルかつビジュアルなモデルとして提供します。

一般にソケットはそのモデルとしてサーバかクライアントのいずれかの立場をとりますが、KnSocketコントロールは、プロパティ設定によりどちらのモデルにも対応します。

ソケットの接続タイプとしては、ストリーム（STREAM）接続とデータグラム（DGRAM）接続をサポートします。

ソケットオブジェクト（KnSocketObject）

KnSocketコントロールは、その内部においてソケット接続の単位にソケットオブジェクト（KnSocketObject）を生成します。KnSocketコントロールのサーバには接続クライアント数分のKnSocketObjectが存在し、マルチクライアントに対応します。

KnSocketObjectは、 KnSocketコントロールのSocketsプロパティ（コレクション）により参照されます。

KnSocketコントロールにおいてKnSocketObjectはWindowsソケットに対応し、ソケットの基本機能をサポートします。STREAM接続でサーバの場合を除き、KnSocketコントロールのKnSocketObjectは常に１つです。

KnSocketObjectは、Windowsソケットに対応するオブジェクトであり、内部的に送受信バッファを管理し、非同期（ノンブロッキング）通信を実現します。

サンプルイメージ

KnSocketコントロールはアイコンにより表示されます。

アイコンの表示は、ソケットモデル（サーバ/クライアント）、接続タイプ（STREAM/DGRAM）、および実行時にはソケットの状態により変化し、ビジュアルな認識をサポートします。

 | サーバ | クライアント
STREAM |  |
DGRAM |  |

上記のサンプルイメージは、いずれも左から「クローズ」、「オープン」、「コネクト」、「送信」、「受信」、「一般エラー」、「通信エラー」の状態を表します。編集時のアイコン表示は、常に上記のクローズ表示です。

実行時にアイコンを非表示にしたい場合は、VisibleプロパティをFalseに設定してください（Visual Basic）。

関連ファイル

KnSocketコントロールの関連ファイル、およびプログラムIDは次のお通りです。

ファイル/プログラムID | 内容
KnSocket.ocx | KnSocketコントロール（コンポーネント）です。
KnSocket.lic | KnSocketコントロールのライセンスファイルです。 正しく対応するライセンスファイルが無い場合は、トライアル版と見なされ、ご利用が制限されます。
KnSocket.chm | KnSocketコントロールのヘルプファイルです。
KnSocket.KnSocketCtrl | KnSocketコントロールのプログラムID（ProgID）です。

機能概要

KnSocketコントロールは、基本的に次のメソッドと受信イベントによりデータ通信を実現します。

メソッド/イベント | 概要
Openメソッド | ソケットのオープン（コネクト）
Closeメソッド | ソケットのクローズ
Send*メソッド | データの送信
Receive*イベント | データの受信通知

サーバモデルとクライアントモデルのどちらのモデルについても上記のメソッド/イベントは同様に扱うことができます。サーバモデルとクライアントモデルの主な違いは、STREAM接続におけるOpenメソッドの意味合いになります。

サーバモデル：接続要求受入状態の形成を意味します。

クライアントモデル：接続の要求を意味します。

KnSocketコントロールの特徴は次の通りです。

ソケットのモデルとして、サーバモデルとクライアントモデルをサポートします（SocketPositionプロパティ）。

ソケットの接続タイプとして、STREAM接続とDGRAM接続をサポートします（SocketTypeプロパティ）。

STREAM接続のサーバは、複数のクライアントと接続可能です。

各ソケットの状態は、ソケットモニタ・ダイアログでモニタリングできます。

送受信データとしてバリアント、文字列、任意のバイナリ、およびファイルをサポートします。

データの受信は、イベントとして受け取ることができます。

基本事項

KnSocketコントロールは、自身をLocalソケット（コントロール）と呼び、通信先をRemoteソケット（コントロール）と呼びます。

通信（接続）するKnSocketコントロールは、一方がサーバ、他方がクライアントになるように設定してください（SocketPositionプロパティ）。

ソケットの接続タイプ（SocketTypeプロパティ）はサーバ側とクライアント側で矛盾のないように設定してください。

注意事項

KnSocketコントロールは、通信の両端（ペア）で使用することを基本とします。KnSocketコントロールをクライアント側のみ（あるいはサーバ側のみ）で使用する場合、次の点に注意してください。

送受信可能なデータタイプはテキストデータ、およびバイナリデータに限られます。

送受信データのバイトオーダ（ビッグエンディアン／リトルエンディアン）については、利用者側で対応してください。

KnSocketコントロールで利用しているWinSockのバージョンは1.1です。

ヘルプファイル、およびマニュアルにおける言語インタフェースの記述は、基本的にVisual Basic言語を対象としています。他の言語環境でご利用される場合は、お手数ですが対応の言語に置き換えてご利用ください。

トライアル版

KnSocketコントロールのトライアル版における機能制限は次の通りです。

実行ファイルの実行不可

実行ファイル（exe）はその作成時にトライアル版としてマーキングされます。このため、その実行については拒否されます。

データ受信時にモニタダイアログの強制表示

データ受信時にモニタダイアログを強制表示します。


プロパティページ

KnTilingButtonコントロールのプロパティページは次の通りです。

プロパティページ | 内容 | 備考
General | 基本プロパティを指定します。 |

General

【General】プロパティページは、基本プロパティを指定します。

次は、【General】プロパティページのサンプルイメージです。


ソケットモニタ・ダイアログ

KnSocketコントロールは、通信状態をソケットモニタ・ダイアログによりモニタリングすることが可能です。ソケットモニタ・ダイアログは、複数のクライアントと接続するSTREAM接続のサーバのデバッグなどに特に有効です。

ソケットモニタ・ダイアログを表示するには、実行時においてKnSocketコントロールをダブルクリックします。

ソケットモニタ・ダイアログのサンプルイメージ（サーバモデル）

ソケットモニタ・ダイアログのサンプルイメージ（クライアントモデル）

ソケットモニタ・ダイアログの内容

カラムタイトル | 内容 | 説明
INDEX | ソケットオブジェクトのステータスアイコン | サーバソケット クライアントソケット ソケットオブジェクトの状態を表すアイコンで、左から「クローズ」、「オープン」、「コネクト」、「送信」、「受信」、「一般エラー」、「通信エラー」の状態を表します。
 | ソケットオブジェクトタイプのアイコン | ソケットオブジェクトタイプを表すアイコンです。 Mainソケット（STREAMのサーバ） Workerソケット（STREAMのサーバ） Singleソケット（STREAMのクライアント、DGRAM）
 | ソケットオブジェクトのインデックス値 | ソケットオブジェクト（KnSocketObject）を識別するインデックス値です。
MESSAGE | ソケットオブジェクトのモニタメッセージ | ソケットオブジェクトのモニタメッセージで、エラーメッセージ、Windowsソケットハンドル、送受信状況などが表示されます。


通信データタイプと送受信インタフェース

データのデータを送受信は、送信メソッド（データタイプ別）とこれに対応する受信イベントにより実現します。

次にサポートするデータタイプとそのフォーマット、および対応する送信メソッドと受信イベントを示します。

データタイプ | データフォーマット | 受信イベント | 送信メソッド
バリアント | KnSocketコントロール独自のカスタムフォーマット | ReceiveData | SendData
テキスト | ブレイク文字（NUL）付きシフトＪＩＳ文字列 | ReceiveText | SendText
バイナリ | KnSocketコントロールは関与せず（任意） | ReceiveReceiveEx | SendSendEx
パックドバイナリ | KnSocketコントロール独自のカスタムフォーマット | ReceivePackedEx | SendPackedEx
ファイル | KnSocketコントロール独自のカスタムフォーマット | ReceiveFile | SendFile

バリアントデータは、Visual Basicにおいてはデフォルトのデータタイプ（Variant）です。

テキストデータの文字コードはシフトＪＩＳコードであり、NUL（H00）文字をブレイク文字として受信イベントを発生させます。また、送信メソッドにおいては送信文字列のストッパであるNUL（H00）文字までを送信します。これにより、送信メソッドに対応する受信イベントが発生します。

バイナリデータの送信と受信は必ずしも１対１にはならず、一般に送信単位と受信単位は一致しません。このため、ユーザはデータをストリームとして扱う必要があります。これに対し、パックドバイナリデータは、送信と受信を１対１になるように構造化したもので、ユーザは送信したバイトデータの単位で受信できます。

KnSocketコントロール独自のカスタムフォーマットの構造については、今後の拡張も配慮し公開していません。


バリアントデータの送受信

バリアントデータの送受信における各ソケットの対応データを示します。

 | 受信ソケット | 送信ソケット
 | ReceivedDataTypeプロパティ KnSocketVARIANT KnSocketAUTO |
 | ReceiveDataイベント | SendDataメソッド
Visual Basic | ByVal vData As Variant | vData As Variant
Visual C++ | const VARIANT& vData | const VARIANT& vData
Delphi | vData: OleVariant | vData: OleVariant
C++ Builder | TVariant vData | TVariant vData

バリアントデータにより送受信可能なデータ型は次の通りです。

データ型 | Visual Basic データ型
バイト型 | Byte
ブール型 | Boolean
整数型 | Integer
長整数型 | Long
単精度浮動小数点型 | Single
倍精度浮動小数点型 | Double
通貨型 | Currency
日付型 | Date
文字列型 | String
VARIANT型 | Variant

これらのバリアントデータはスカラのみでなく、一次元配列もサポートします。ただし、VARIANT型の１次元配列の各要素に更にVARIANT型を指定することはできません。

VARIANT型の１次元配列は、任意データ型の配列を扱えるため、まとまりのあるコメンド（パラメータ）データ等の送受信に特に有効です。


テキストデータの送受信

テキストデータの送受信における各ソケットの対応データを示します。

 | 受信ソケット | 送信ソケット
 | ReceivedDataTypeプロパティ KnSocketTEXT KnSocketAUTO |
 | ReceiveTextイベント | SendTextメソッド
Visual Basic | ByVal pszText As String | pszText As String
Visual C++ | LPCTSTR pszText | LPCTSTR pszText
Delphi | const pszText: WideString | const pszText: WideString
C++ Builder | BSTR pszText | BSTR pszText

テキストデータの文字コードはシフトＪＩＳコードであり、NUL（H00）コードをブレイク文字として受信イベントを発生させます。

SendTextメソッドによる送信テキストデータは、その文字列のストッパ文字（NUL）も含めて送信されます。このストッパ文字（NUL）は、受信ソケットにおいてブレイクの単位となり、SendTextメソッドに対応したReceiveTextイベントが発生します。

テキストデータ受信時の強制ブレイク

テキストデータの受信制御機能として、受信時の強制ブレイク（受信イベント通知）を指定することが可能です。

強制ブレイクを利用するためにはReceiveTextBreakプロパティをTrueに設定し、次のブレイクプロパティを任意に指定します。

ReceiveTextBreakStringプロパティ：受信データ文字列による強制ブレイク

ReceiveTextBreakSizeプロパティ：受信データサイズによる強制ブレイク

強制ブレイクを有効にした場合でも、NUL（H00）コードをブレイク文字とするブレイクは発生します。

注意事項

Visual Basicにおける文字コードはUnicodeであるため、テキストデータはSendTextメソッドでシフトＪＩＳコードに変換され、ReceiveTextイベントでUnicodeに復元されます。

KnSocketコントロールを送信、あるいは受信側でのみ使用する場合は、文字コード、およびNUL（H00）コードに注意してください。


バイナリデータの送受信

バイナリデータの送受信における各ソケットの対応データを示します。

 | 受信ソケット | 送信ソケット
 | ReceivedDataTypeプロパティ KnSocketBINARY |
 | Receiveイベント | Sendメソッド
Visual Basic | pbstrData As String, ByVal nData As Long | pbstrData As String, nData As Long
Visual C++ | BSTR* pbstrData, long nData | BSTR* pbstrData, long nData
Delphi | pbstrData: WideString; nData: Integer | pbstrData: WideString; nData: Integer
C++ Builder | BSTR *pbstrData, long nData | BSTR* pbstrData, long nData

 | 受信ソケット | 送信ソケット
 | ReceivedDataTypeプロパティ KnSocketBINARY |
 | ReceiveExイベント | SendExメソッド
Visual Basic | ByVal vDataBinary As Variant, ByVal nDataBinary As Long | vDataBinary As Variant, nDataBinary As Long
Visual C++ | const VARIANT FAR& vDataBinary, long nDataBinary | const VARIANT FAR& vDataBinary, long nDataBinary
Delphi | vDataBinary: OleVariant; nDataBinary: Integer | vDataBinary: OleVariant; nDataBinary: Integer
C++ Builder | TVariant vDataBinary, long nDataBinary | TVariant vDataBinary, long nDataBinary

 | 受信ソケット | 送信ソケット
 | ReceivedDataTypeプロパティ KnSocketTEXT/KnSocketBINARY |
 | KnSocketTEXTイベント/ Receiveイベント/ReceiveExイベント | SendOutFileメソッド
Visual Basic |  | pszPath As String
Visual C++ |  | LPCTSTR pszPath
Delphi |  | Const pszPath: WideString
C++ Builder |  | BSTR pszPath

KnSocketコントロールは、バイナリデータのデータ構造に関与しません。ユーザ任意のバイトストリームであるため、そのデータフォーマットはユーザに依存したのものとなります。

バイナリデータの送信と受信は必ずしも１対１にはならず、一般に送信単位と受信単位は一致しません。このため、ユーザはデータをストリームとして扱う必要があります。これに対し、パックドバイナリデータは、送信と受信を１対１になるように構造化したもので、ユーザは送信したバイトデータの単位で受信できます。

SendOutFileメソッドは、指定したファイルの内容をそのままバイナリデータとして送信します。これに対する受信はバイナリデータの受信と同様です。ファイルがテキストファイルの場合はReceivedDataTypeプロパティをKnSocketTEXTとしてReceiveTextイベントにより受信できますが、ファイル内容がシフトＪＩＳでNUL文字がない場合は、ファイル内容全体を一度のReceiveTextイベントで受信することになります。

バイナリデータ受信時の強制ブレイク

バイナリデータの受信制御機能として、受信時の強制ブレイク（受信イベント通知）を指定することが可能です。

強制ブレイクを利用するためには、ReceiveBinaryBreakプロパティをTrueに設定し、次のブレイクプロパティを任意に指定します。

ReceiveBinaryBreakByteプロパティ：受信データバイトによる強制ブレイク

ReceiveBinaryBreakSizeプロパティ：受信データサイズによる強制ブレイク

強制ブレイクを有効にした場合、Windowsソケットベースによる不定なブレイクは抑制されます。

注意事項

受信イベントプロシジャにおいて、受信データのバイト数を超えてデータをアクセスした場合、一般に例外が発生するので注意してください。

Visual BasicにおけるSendメソッドの送受信データ型はByRef String（文字列参照）ですが、その内容についてはStringとして扱われるものであれば文字列である必要はありません。 もちろん、内容が文字列（Unicode文字セット）の場合も文字列変換されることなく指定のバイト数が送受信されます。

Visual Basicにおいてバイナリデータを文字列型データとして扱う方法

Visual Basicにおいてバイナリデータを送受信する場合、そのデータを文字列型（String）として扱うことになります（Sendメソッド、Receiveイベント）。そこで、Visual Basicにおいて、バイナリデータを文字列型（String）データとして扱う方法について補足します。

サンプルとして、送信時におけるデータの作成と受信時におけるデータの解析を考えます。

バイナリデータの作成

基本的にバイトデータを文字列型データとして扱うには、ChrB関数を利用します。（ちなみに、Chr（ChrW）関数では、指定した値に対応する文字（Unicode）を示す文字列が取得できます。）

サンプルコード

Dim str32Bytes As String

For n = 0 To 31

str32Bytes = str32Bytes + ChrB(n)

Next n

KnSocket1(nIndex).Send str32Bytes, 32

バイナリデータの解析

基本的に文字列型データからバイトデータを取り出すには、MidB関数を利用します。また、AscB関数により文字列先頭の文字コード値を取得できます。

サンプルコード

Dim strDumpText As String

Dim strByte As String

Dim nByte As Integer

For n = 1 To nDump

strByte = MidB(strDump, n, 1) + Chr(0)

nByte = AscB(strByte)

strDumpText = strDumpText + Hex(nByte)

If (n Mod 10) = 0 Then

strDumpText = strDumpText + vbCrLf

Else

strDumpText = strDumpText + " "

End If

Next n

Form1.DumpText.Text = strDumpText


パックドバイナリデータの送受信

パックドバイナリデータの送受信における各ソケットの対応データを示します。

 | 受信ソケット | 送信ソケット
 | ReceivedDataTypeプロパティ KnSocketPACKED KnSocketAUTO |
 | ReceivePackedイベント | SendPackedメソッド
Visual Basic | pbstrData As String, ByVal nData As Long | pbstrData As String, nData As Long, nFragment As Integer
Visual C++ | BSTR* pbstrData, long nData | BSTR* pbstrData, long nData, short nFragment
Delphi | pbstrData: WideString; nData: Integer | pbstrData: WideString; nData: Integer; nFragment: Smallint
C++ Builder | BSTR *pbstrData, long nData | BSTR* pbstrData, long nData, short nFragment

 | 受信ソケット | 送信ソケット
 | ReceivedDataTypeプロパティ KnSocketPACKED KnSocketAUTO |
 | ReceivePackedExイベント | SendPackedExメソッド
Visual Basic | ByVal vDataBinary As Variant, ByVal nDataBinary As Long | vDataBinary As Variant, nDataBinary As Long, nFragment As Integer
Visual C++ | const VARIANT FAR& vDataBinary, long nDataBinary | const VARIANT FAR& vDataBinary, long nDataBinary, short nFragment
Delphi | vDataBinary: OleVariant; nDataBinary: Integer | vDataBinary: OleVariant; nDataBinary: Integer; nFragment: Smallint
C++ Builder | TVariant vDataBinary, long nDataBinary | TVariant vDataBinary, long nDataBinary, short nFragment

パックドバイナリデータは、送信と受信を１対１になるように構造化したもので、ユーザは送信したバイトデータの単位で受信できます。（バイナリデータでは、送受信における単位が、送信と受信では必ずしも１対１にはならず、ユーザはデータをストリームとして扱う必要があります。）

SendPackedメソッド第３パラメータは送信データのフラグメントサイズで、データをそのサイズで分割して送信することができます。受信単位には影響しません。送信データがそれほど大きくない場合は、送信データサイズ（第２パラメータ）と同値にしておけばＯＫ.です。


ファイルデータの送受信

ファイルデータの送受信における各ソケットの対応データを示します。

 | 受信ソケット | 送信ソケット
 | ReceivedDataTypeプロパティ KnSocketFILE KnSocketAUTO |
 | ReceiveFileイベント | SendFileメソッド
Visual Basic | ByVal pszCaption As String | pszPath As String, pszCaption As String
Visual C++ | LPCTSTR pszCaption | LPCTSTR pszPath, LPCTSTR pszCaption
Delphi | const pszCaption: WideString | const pszPath: WideString; const pszCaption: WideString
C++ Builder | BSTR pszCaption | BSTR pszPath, BSTR pszCaption

ファイルデータの送信メソッドでは、そのファイルのパス名とキャプションを指定します。これに対応して受信イベントプロシジャには、送信メソッドのキャプションが伝えられます。また、受信したファイルデータはKnSocketコントロールにおいて保持され、MakeReceivedFileメソッドによりファイル化できます。

サンプルコード（ファイル受信）

Private Sub KnSocket1_ReceiveFile(ByVal nIndex As Integer, ByVal pszCaption As String)

CommonDialog1.CancelError = True

On Error GoTo ErrHandler

?

CommonDialog1.FileName = pszCaption

CommonDialog1.ShowSave '-- [ファイル名を付けて保存]ダイアログボックス表示

KnSocket1.Sockets(nIndex).MakeReceivedFile (CommonDialog1.FileName)

Exit Sub

ErrHandler:

'---- [キャンセル]

End Sub

サンプルコード（ファイル送信）

CommonDialog1.CancelError = True

On Error GoTo ErrHandler

CommonDialog1.ShowOpen '-- [ファイルを開く]ダイアログボックス表示

KnSocket1(nIndex).SendFile CommonDialog1.FileName, CommonDialog1.FileTitle

Exit Sub

ErrHandler:

'---- [キャンセル]


STREAM接続における制御シーケンス

STREAM接続におけるサーバとクライアント間の制御シーケンスを示します。

STREAM接続におけるサーバでは、コネクト要求をアクセプトするKnSocketObjectをMainソケット、クライアントと接続するKnSocketObjectをWorkerソケットと呼び区別します。また、クライアントでは、KnSocketObjectをSingleソケットと呼びます。

Workerソケットは、クライアントの接続要求分だけ生成され機能します。Singleソケットのオープンは、対応するMainソケットが既にオープンされている場合のみ成功し、Workerソケットとコネクトされます。

コネクト状態において、Workerソケットがクローズすると、対応するSingleソケットもクローズ（ディスコネクト）し、Singleソケットがクローズした場合はWorkerソケットがディスコネクトされます（Mainソケットはクローズされません）。また、ディスコネクト時に対応するKnSocketObjectは消滅します。


STREAM接続に関する注意・補足事項

STREAM接続のLocalソケットとRemoteソケットのアドレスについて

STREAM接続のサーバソケットとクライアントソケットそれぞれにおけるLocalソケットアドレス（LocalIPプロパティ、LocalPortプロパティ）とRemoteソケットアドレス（RemoteIPプロパティ、RemotePortプロパティ）の扱いをまとめます。

 | サーバソケット | クライアントソケット
Localソケットアドレス | Openメソッドで参照 | 無意味
Remoteソケットアドレス | 無意味 | Openメソッドで参照

サーバソケットのLocalPortプロパティは、0を設定することで、システムにポート番号の割り当てを委任できます。

STREAM接続のサーバにおけるWorkerソケットについて

STREAM接続のサーバソケットでは一般に接続クライアントに対応する複数のKnSocketObject がWorkerソケットとして存在します。それぞれのWorkerソケットへのアクセスには、KnSocketObjectコレクションの参照であるSocketsプロパティを利用します。

KnSocket1.Sockets(nIndex).Send ...

Socketsプロパティはソケットインデックスにより接続KnSocketObjectを特定します。また、データ受信において、ソケットインデックスは受信系イベントプロシジャの第１パラメータに指定されます。（STREAM接続のサーバソケット以外では、常に０（無意味）です。

サーバソケットにおけるソケットインデックス１のWorkerソケットについては、 Socketsプロパティを省略した簡易的な記述が可能です。

KnSocket1.Send ...

これは、クライアントソケットにおける記述と同様です。


DGRAM接続に関する注意・補足事項

DGRAM接続のLocalソケットとRemoteソケットのアドレスについて

DGRAM接続のサーバソケットとクライアントソケットそれぞれにおけるLocalソケットアドレス（LocalIPプロパティ、LocalPortプロパティ）とRemoteソケットアドレス（RemoteIPプロパティ、RemotePortプロパティ）の扱いをまとめます。

 | サーバソケット | クライアントソケット
Localソケットアドレス | Openメソッドで参照 | Openメソッドで参照
Remoteソケットアドレス | 送信元ソケットアドレス | （Openメソッドで参照） 送信メソッドで参照

サーバソケット、およびクライアントソケットのLocalPortプロパティは、0を設定することで、システムにポート番号の割り当てを委任できます。

Remoteソケットアドレスは、送信メソッドにおいて参照され、受信メソッドにおいて送信元のアドレスに自動設定されます。このため、受信ソケットのその後のデータ送信は、送信元ソケットアドレスに向けられます。（送信元ソケット以外に応答する場合は、そのRemoteソケットアドレスを送信メソッド呼び出し前に再設定する必要があります。）

DGRAM接続時の送受信データサイズについて

DGRAM接続時の受信バッファサイズ（BytesReceivedプロパティ）は、接続先の送信データのサイズ以上の値を設定してください。指定したバッファよりデータグラムが大きいときは、データグラムの先頭部分からバッファサイズ分だけを受信し、入りきらないデータは失われます。

また、DGRAM接続では、送信が正常終了しても、データの受け渡しが成功したことを示しているわけではないことに注意してください。特にデータサイズが8Kバイトを超える場合は、STREAM接続の利用をお勧めします。

DGRAM接続時のSendFileメソッドについて

上記データサイズに関連して、DGRAM接続ではSendFileメソッドにおけるファイルのサイズが8Kバイトを超える場合は、送信が失敗することが考えられます。このため、同様にSTREAM接続の利用をお勧めします。

DGRAM接続のブロードキャストについて

KnSocketコントロールは、DGRAM接続におけるブロードキャスト送信をサポートしません。


イベントプロシジャに関する注意・補足事項

Windowsにおけるイベントはユーザインタフェース系のイベントが一般的ですが、KnSocketコントロールのイベントは通信系による通知イベントが主となります。

ユーザインタフェース系のイベントは基本的にユーザによる入力とその結果の確認をパターンとして進行するため、多くの場合イベントプロシジャの実行中に新たなイベントの発生を配慮する必要はありません。これに対し、通信系のイベントは一般に非同期に発生するため、対応するイベントプロシジャの実行中に新たなイベントの発生を配慮する必要があります。

しかし、Windowsではメッセージの配信はスレッドのメッセージ ループにより同期されるため、イベントプロシジャにおいて更にメッセージ ループを作らない限り非同期にイベントプロシジャが実行されることはありません。

このため上記の配慮を必要とするケースは、イベントプロシジャにおいてメッセージの配信をする場合となります。

イベントプロシジャのネスト呼び出し

イベントプロシジャにおいて、DoEvents関数（Visula Basic）等により、メッセージの配信制御をした場合、それまでメッセージ キューに溜まっていたメッセージは配信され、対応するイベントプロシジャがネストして呼び出されます。

ただし、KnSocketコントロールにおけるデータ受信系のイベントプロシジャについては、同一の接続ソケットに対して、上記のネスト呼び出しは発生させません。（データ受信系のイベントプロシジャの実行中は新たなデータ受信通知は待機させ、現在のイベントプロシジャ終了後、順次受信データを処理しています。）

このため、データ受信系のイベントプロシジャは常に受信したデータの順に呼び出されます。

イベントの消失

イベントプロシジャにおいて、MsgBox関数（Visula Basic）等により、モーダルウィンドウを表示した場合、それまでメッセージ キューに溜まっていた通信系メッセージ、および表示中に発生した通信系メッセージは消失してしまいます。このため対応するイベントプロシジャは呼び出されません。

このため、通信系メッセージの発生が考えられるケースでは、モーダルウィンドウの利用は避けてください。

SocketErrorイベントプロシジャ

SocketErrorイベントプロシジャでは、必要に応じてエラーソケットのディスコネクト（KnSocketObjectのDisconnectメソッド）、およびKnSocketコントロールのクローズ（Closeメソッド）を利用してください。


タイムアウトに関する注意・補足事項

KnSocketコントロールで利用しているWinSockのバージョンは1.1であるため、接続のタイムアウトの時間は設定できません。（WinSock 2ではサポートされています。）

基本的な対応策はなく、SocketErrorイベントで接続がタイムアウトした場合（WSAETIMEDOUT）にはOpenメソッドを再発行し、接続をリトライしてください。ただし、必ずしも接続できるとは限らないため、リトライ回数を設定し、対応してください。


定数一覧

定数項目 | 説明 | 備考
KnSocketPosition | ソケットポジション |
KnSocketType | ソケットタイプ |
KnSocketDataType | 受信データタイプ |


KnSocketPosition

ソケットポジション

定数名 | 説明 | 備考
0 - KnSocketSERVER | サーバ・ソケット |
1 - KnSocketCLIENT | クライアント・ソケット |


KnSocketType

ソケットタイプ

定数名 | 説明 | 備考
0 - KnSocketSTREAM | STREAMタイプ |
1 - KnSocketDGRAM | DGRAMタイプ |


KnSocketDataType

受信データタイプ

定数名 | 説明 | 備考
0 - KnSocketBINARY | バイナリ受信 | Receiveイベントで受信
1 - KnSocketTEXT | テキスト受信 | ReceiveTextイベントで受信
2 - KnSocketVARIANT | VARIANT受信 | ReceiveDataイベントで受信
3 - KnSocketPACKED | パックドバイナリ受信 | ReceivePackedイベントで受信
4 - KnSocketFILE | ファイル受信 | ReceiveFileイベントで受信
5 - KnSocketAUTO | 自動認識受信 |


通知エラー一覧

一般エラー（KnSocketコントロール）

エラー番号 | 内容 | 備考
9001 | メモリ不足です。 |
9002 | RomoteIPプロパティが未設定、あるいは不正です。 | STREAM接続クライアント
9003 | RemotePortプロパティが未設定です。 | DGRAM接続
9004 | ReceivingFileプロパティのファイルがオープンできません。 |

送信系エラー（KnSocketコントロール）

エラー番号 | 内容 | 備考
9101 | SendDataメソッドでサポートしていないバリアントデータが指定されました。 |
9102 | 送信系メソッドがクローズ状態で呼び出されました。 |
9103 | 送信要求に送信速度が追いつきません。 | ⇒NumOfSendBufプロパティ（送信データのバッファ数）を増やしてください。
9104 | SendOutFileメソッドが失敗しました。 |
9105 | SendFileメソッドが失敗しました。 |
9106 | SendFileメソッドで指定ファイルのオープンに失敗しました。 | ⇒ファイルのパス名を確認してください。
9107 | SendFileメソッドで指定ファイルのサイズが０です。 | 送信をキャンセルします。

受信系エラー（KnSocketコントロール）

エラー番号 | 内容 | 備考
9201 | ReceiveDataイベントで非バリアントデータ、あるいはサポートしていないバリアントデータを受信しました。 | ⇒ReceivedDataTypeプロパティを送信データタイプと合わせてください。
9202 | 受信データのデータ形式、あるいはデータタイプのエラーです。 |
9203 | ReceivePackedイベントで不正なデータを受信しました。 | ⇒ReceivedDataTypeプロパティを送信データタイプと合わせてください。
9204 | ReceiveFileイベントでデータの受信に失敗しました。 |
9205 | MakeReceivedFileメソッドでファイルの作成に失敗しました。 |
9206 | 受信エラーです。 |
9207 | ReceivedDataTypeプロパティのAUTO指定でバイナリデータが認識されました。 |

システムエラー（KnSocketコントロール）

エラー番号 | 内容 | 備考
9901 | システムエラーです。 |
9902 | システムエラーです。 |

通信エラー（Windowsソケット）

エラー番号 | 内容 | 備考
10004 | 呼び出しが取り消されました。 | WSAEINTR
10009 | ネットワークエラーです。 | WSAEBADF
10013 | 要求したアドレスはブロードキャスト アドレスですが、適切なフラグが設定されていませんでした。 | WSAEACCES
10014 | コンポーネントエラーです。 | WSAEFAULT
10022 | ソケットはまだアドレスにバインドされていません。 | WSAEINVAL ⇒RemoteIPプロパティを確認してください。
10024 | 受け入れるエントリ上のキューが空で、利用できるディスクリプタがありません。 | WSAEMFILE
10035 | ソケットは非ブロッキングになっていて、要求した操作がブロックされました。 | WSAEWOULDBLOCK ※このエラーは内部処理されるため実際には発生しません。
10036 | 実行中のWindowsソケット呼び出しがブロッキングされています。 | WSAEINPROGRESS
10037 | ネットワークエラーです。 | WSAEALREADY
10038 | ディスクリプタがソケットではありません。 | WSAENOTSOCK
10039 | 宛先アドレスが必要です。 | WSAEDESTADDRREQ
10040 | データグラムが長すぎて、指定したバッファに入りきらないため、切り詰められました。 | WSAEMSGSIZE
10041 | ソケットに指定したポートの型が正しくありません。 | WSAEPROTOTYPE
10042 | コンポーネントエラーです。 | WSAENOPROTOOPT
10043 | 指定したポートはサポートしていません。 | WSAEPROTONOSUPPORT
10044 | 指定したソケットの型は、このアドレス ファミリではサポートしていません。 | WSAESOCKTNOSUPPORT
10045 | 参照しているソケットは、接続指向のサービスをサポートするタイプではありません。 | WSAEOPNOTSUPP
10046 |  | WSAEPFNOSUPPORT
10047 | 指定したアドレス ファミリは、このポートではサポートしていません。 | WSAEAFNOSUPPORT
10048 | 指定したアドレスは使用中です。 | WSAEADDRINUSE
10049 | 指定したアドレスは、ローカル マシンからは利用できません。 | WSAEADDRNOTAVAIL
10050 | Windowsソケットのインプリメントが、ネットワークサブシステムの異常を検出しました。 | WSAENETDOWN
10051 | 現時点で、ホストからネットワークに到達できません。 | WSAENETUNREACH
10052 | 接続がタイムアウトしました。 | WSAENETRESET
10053 | タイムアウトまたはその他の障害により接続がアボートしました。 | WSAECONNABORTED
10054 | 接続がリモート側からリセットされました。 | WSAECONNRESET
10055 | 利用できるバッファ領域がありません。 | WSAENOBUFS
10056 | ソケットは既に接続されています。 | WSAEISCONN
10057 | ソケットが接続されていません。 | WSAENOTCONN
10058 | ソケットはシャット ダウンされました。 | WSAESHUTDOWN
10059 | ネットワークエラーです。 | WSAETOOMANYREFS
10060 | 接続を試みましたが、タイムアウトで接続を確立できませんでした。 | WSAETIMEDOUT
10061 | 接続を試みましたが、リジェクトされました。 | WSAECONNREFUSED
10062 | ネットワークエラーです。 | WSAELOOP
10063 | ネットワークエラーです。 | WSAENAMETOOLONG
10064 | ネットワークエラーです。 | WSAEHOSTDOWN
10065 | ネットワークエラーです。 | WSAEHOSTUNREACH
10066 | ネットワークエラーです。 | WSAENOTEMPTY
10067 | ネットワークエラーです。 | WSAEPROCLIM
10068 | ネットワークエラーです。 | WSAEUSERS
10069 | ネットワークエラーです。 | WSAEDQUOT
10070 | ネットワークエラーです。 | WSAESTALE
10071 | ネットワークエラーです。 | WSAEREMOTE
10091 | ネットワークエラーです。 | WSASYSNOTREADY
10092 | ネットワークエラーです。 | WSAVERNOTSUPPORTED
10093 | Windowsソケットの初期化に失敗しています。 | WSANOTINITIALISED
10101 | ネットワークエラーです。 | WSAEDISCON
10102 | ネットワークエラーです。 | WSAENOMORE
10103 | ネットワークエラーです。 | WSAECANCELLED
10104 | ネットワークエラーです。 | WSAEINVALIDPROCTABLE
10105 | ネットワークエラーです。 | WSAEINVALIDPROVIDER
10106 | ネットワークエラーです。 | WSAEPROVIDERFAILEDINIT
10107 | ネットワークエラーです。 | WSASYSCALLFAILURE
10108 | ネットワークエラーです。 | WSASERVICE_NOT_FOUND
10109 | ネットワークエラーです。 | WSATYPE_NOT_FOUND
10110 | ネットワークエラーです。 | WSA_E_NO_MORE
10111 | ネットワークエラーです。 | WSA_E_CANCELLED
10112 | ネットワークエラーです。 | WSAEREFUSED


プロパティ一覧

アルファベット昇順プロパティ一覧

プロパティ | 説明 | 備考
BytesReceived | 受信時の受信データサイズ | 最大
Caption | キャプション |
LocalHostName | Localソケットのホスト名 | 必ずしも必要ではない
LocalIP | LocalソケットのIPアドレス |
LocalPort | Localソケットのポート番号 |
NumOfSendBuf | 送信データのバッファ数 |
ReceiveBinaryBreak | バイナリデータ受信時の強制ブレイク指定 |
ReceiveBinaryBreakByte | バイナリデータ受信時の強制ブレイクバイト |
ReceiveBinaryBreakSize | バイナリデータ受信時の強制ブレイクサイズ |
ReceivedDataType | 受信時の受信データタイプ |
ReceiveExEvent | ReceiveExイベントの通知指定 |
ReceivePackedExEvent | ReceivePackedExイベントの通知指定 |
ReceiveTextBreak | テキストデータ受信時の強制ブレイク指定 |
ReceiveTextBreakString | テキストデータ受信時の強制ブレイク文字列 |
ReceiveTextBreakSize | テキストデータ受信時の強制ブレイクサイズ |
ReceivingFile | 受信データの保存用ファイル |
RemoteHostName | Remoteソケットのホスト名 | 必ずしも必要ではない
RemoteIP | RemoteソケットのIPアドレス |
RemotePort | Remoteソケットのポート番号 |
SocketPosition | ソケットポジション | サーバ／クライアント
Sockets | ソケットオブジェクトのコレクション |
SocketType | ソケットタイプ | STREAM接続／DGRAM接続


BytesReceivedプロパティ

受信時における受信データの最大サイズ（バイト）を設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.BytesReceived [ = value ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
value | 受信データバッファのサイズです。 |

解説

受信におけるデータの最大のサイズを指定します。

特に、DGRAM接続の場合、接続先の送信データのサイズ以上の値を設定しておく必要があります。

受信時に有効なプロパティです。

例

サンプルコード

KnSocket1.BytesReceived = 8192


Captionプロパティ

キャプションを設定、または取得します。

構文

object.Caption[ = string ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
string | キャプションを示す文字列式を指定します。 |

解説

キャプションは、表示対象ではありませんが、各コントロールの代名詞として、あるいは文字列情報として利用してください。

例

サンプルコード

KnSocket1.Caption = "Port for File Transfer"


LocalHostNameプロパティ

Localソケットのホスト名を設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.LocalHostName [ = string ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
string | Localソケットのホスト名を指定します。 |

解説

Localソケットのホスト名（アドレス）です。

初期状態においては、そのローカルＰＣの名前が設定されます（gethostnameによる）。また、ロード時にもその保存内容を問わず、そのローカルＰＣの名前が設定されます。必要であればその後の変更は可能です。

ただし、ソケットアドレスとしては、LocalIPプロパティが利用されるため、参照情報として意味を持ちます。

例

サンプルコード

KnSocket1.LocalHostName = "miho"


LocalIPプロパティ

LocalソケットのIPアドレスを設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.LocalIP [ = string ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
string | LocalソケットのIPアドレスを指定します。 |

解説

LocalソケットのIPアドレスです。

初期状態においては、そのローカルＰＣのＩＰアドレスが設定されます（gethostbynameによる）。また、ロード時にもその保存内容を問わず、そのローカルＰＣのＩＰアドレスが設定されます。必要であればその後の変更は可能です。

ソケットアドレスとしては、LocalHostNameプロパティよりも優先されます。

例

サンプルコード

KnSocket1.LocalIP = "xx.xx.xx.xx"


LocalPortプロパティ

Localソケットのポート番号を設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.LocalPort [ = value]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
value | Localソケットのポート番号を指定します。 |

解説

Localソケットのポート番号（アドレス）です。

ポート番号における注意事項

一部のポート番号はRFC1060で予約されています。よって、これらの予約（割り当て）済みポート番号を確認のうえ、設定することをお勧めします。また、ポート番号として0を設定すると、システムにポート番号の割り当てを委任できます。

特に一般的なサービス（プロトコル）のポート番号は次の通りです。

ポート番号 | サービス | サービス
7 | ECHO |
20 | FTP | データ接続
21 | FTP |
23 | Telnet |
25 | SMTP | 電子メール送信
43 | Whois |
70 | Gopher |
79 | Finger |
80 | HTTP | WWW
110 | POP3 | 電子メール受信
119 | NNTP |

例

サンプルコード

KnSocket1.LocalPort = 10001


NumOfSendBufプロパティ

送信時における送信データのバッファ数を設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.NumOfSendBuf [ = value]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
value | 送信データのバッファ数を指定します。 |

解説

送信時のブロッキングに対応するバッファの数です。

次のケースにおいてKnSocketObject内部で有効に機能します。

Openメソッドから復帰してもコネクトが完了していない場合の送信要求。

連続した送信要求。

送信時に有効なプロパティです。

例

サンプルコード

KnSocket1.NumOfSendBuf = 8192


ReceiveBinaryBreakプロパティ

ReceiveBinaryBreakプロパティ、ReceiveBinaryBreakByteプロパティ、ReceiveBinaryBreakSizeプロパティ

バイナリデータ受信時の強制ブレイク（受信イベント通知）の指定を設定、または取得します。

強制ブレイクの指定は、受信データ（ReceiveBinaryBreakByteプロパティ）による指定と受信データサイズ（ReceiveBinaryBreakSizeプロパティ）による指定が可能であり、これらのブレイクパラメータの有効/無効（ReceiveBinaryBreakプロパティ）も指定できます。

構文

object.ReceiveBinaryBreak[ = boolean ]

object.ReceiveBinaryBreakByte[ = byte]

object.ReceiveBinaryBreakSize[ = value]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
boolean | バイナリデータ受信時の強制ブレイク（受信イベント通知）の指定を示すブール式を指定します。 | Trueで有効。
byte | 強制ブレイクバイト |
value | 強制ブレイクサイズ |

解説

バイナリデータ受信時の強制ブレイク（受信イベント通知）の指定です。

強制ブレイクを利用するためには、ReceiveBinaryBreakプロパティをTrueに設定し、次のブレイクプロパティを任意に指定します。

ReceiveBinaryBreakByteプロパティ：受信データバイトによる強制ブレイク

ReceiveBinaryBreakSizeプロパティ：受信データサイズによる強制ブレイク

強制ブレイクを有効にした場合、Windowsソケットベースによる不定なブレイクは抑制されます。

例

サンプルコード

KnSocket1.ReceiveBinaryBreak = True

KnSocket1.ReceiveBinaryBreakByte = &H0D

KnSocket1.ReceiveBinaryBreakSize = 1024


ReceivedDataTypeプロパティ

受信時における受信データのタイプを設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.ReceivedDataType [ = number ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
number | 受信時における受信データのタイプを定数値KnSocketDataTypeで指定します。 |

解説

受信データを指定のデータタイプとして、受信することを指定します。

また、受信データは対応する受信イベントプロシジャにより受け取ることができます。

受信データのタイプは、ソケット接続（KnSocketObject）別に指定可能であり、この値は各ソケット接続時の初期値となります。すなわち、KnSocketObjectのReceivedDataTypeプロパティは、この設定値で初期化されますが、その後はKnSocketObjec別に変更することが可能です。

注意事項

送信データのタイプと、受信するReceivedDataTypeプロパティが矛盾すると受信イベントプロシジャを呼び出せず、受信エラ－となります。

例

サンプルコード

KnSocket1.ReceivedDataType = KnSocketTEXT

KnSocket1.ReceivedDataType = 1


ReceiveExEventプロパティ

ReceiveExイベントの通知の指定を示すブール値を設定、または取得します。

構文

object.ReceiveExEvent [ = boolean ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
boolean | ReceiveExイベントの通知の指定を示すブール式を指定します。 | Trueで有効。

解説

ReceiveExイベントの通知の指定を示すブール値です。

すなわち、Trueの場合のみReceiveExイベントを通知します。またこの場合、Receiveイベントは通知されません。

例

サンプルコード

KnSocket1.ReceiveExEvent = True


ReceivePackedExEventプロパティ

ReceivePackedExイベントの通知の指定を示すブール値を設定、または取得します。

構文

object.ReceivePackedExEvent [ = boolean ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
boolean | ReceivePackedExEventイベントの通知の指定を示すブール式を指定します。 | Trueで有効。

解説

ReceivePackedExイベントの通知の指定を示すブール値です。

すなわち、Trueの場合のみReceivePackedExイベントを通知します。またこの場合、ReceivePackedイベントは通知されません。

例

サンプルコード

KnSocket1.ReceivePackedExEvent = True


ReceiveTextBreakプロパティ

ReceiveTextBreakプロパティ、ReceiveTextBreakStringプロパティ、ReceiveTextBreakSizeプロパティ

テキストデータ受信時の強制ブレイク（受信イベント通知）の指定を設定、または取得します。

強制ブレイクの指定は、受信データ（ReceiveTextBreakStringプロパティ）による指定と受信データサイズ（ReceiveTextBreakSizeプロパティ）による指定が可能であり、これらのブレイクパラメータの有効/無効（ReceiveTextBreakプロパティ）も指定できます。

構文

object.ReceiveTextBreak[ = boolean ]

object.ReceiveTextBreakString[ = string]

object.ReceiveTextBreakSize[ = value]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
boolean | テキストデータ受信時の強制ブレイク（受信イベント通知）の指定を示すブール式を指定します。 | Trueで有効。
string | 強制ブレイク文字列 |
value | 強制ブレイクサイズ |

解説

テキストデータ受信時の強制ブレイク（受信イベント通知）の指定です。

強制ブレイクを利用するためにはReceiveTextBreakプロパティをTrueに設定し、次のブレイクプロパティを任意に指定します。

ReceiveTextBreakStringプロパティ：受信データ文字列による強制ブレイク

ReceiveTextBreakSizeプロパティ：受信データサイズによる強制ブレイク

強制ブレイクを有効にした場合でも、NUL（H00）コードをブレイク文字とするブレイクは発生します。

例

サンプルコード

KnSocket1.ReceiveTextBreak = True

KnSocket1.ReceiveTextBreakString = ";"

KnSocket1.ReceiveTextBreakSize = 1024


ReceivingFileプロパティ

受信データの保存用ファイルを設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.ReceivingFile [ = string ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
string | 受信データ保存用ファイル名を指定します。 |

解説

受信データをイベント通知とは別に、ファイルに保存したい場合に設定します。

指定のファイルは、受信データを受信ログとして保存します（Openメソッドにおいてオープンされ、Closeメソッドによりクローズされます）。よって、受信データのタイプ（ReceivedDataTypeプロパティ）が、バイナリ（KnSocketBINARY）、およびテキスト（KnSocketTEXT）の場合に有効です。

パスを含めたファイル名を設定することで機能します（空白の場合は機能しません）。

ただし、STREAM接続のサーバは、接続クライアント別に保存するため、保存用ファイル名は、指定のファイル名に「#<インデックス>」を付加したものとなります。（拡張子はそのままです。）

ファイルの送受信については、SendFileメソッド、およびReceiveFileイベントとMakeReceivedFileメソッドを利用してください。

例

サンプルコード

KnSocket1.ReceivingFile = "c:\\temp\\KnSocket.log"


RemoteHostNameプロパティ

Remoteソケットのホスト名を設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.RemoteHostName[ = string ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
string | Remoteソケットのホスト名を指定します。 |

解説

Remoteソケットのホスト名（アドレス）です。

ソケットアドレスとしては、RemoteIPプロパティが利用されるため、参照情報として意味を持ちます。ただし、プロパティページにおける設定では、RemoteHostNameプロパティの変更することで、RemoteIPプロパティが自動再設定されます。

サーバ・ソケットにおいては意味のないプロパティとなります。

例

サンプルコード

strRemoteHostName = KnSocket1.RemoteHostName


RemoteIPプロパティ

RemoteソケットのIPアドレスを設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.RemoteIP [ = string ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
string | RemoteソケットのIPアドレスを指定します。 |

解説

RemoteソケットのIPアドレスです。

また、ソケットアドレスとしては、RemoteHostNameプロパティよりも優先します。

サーバ・ソケットにおいては意味のないプロパティとなります。

例

サンプルコード

strRemoteIP = KnSocket1.RemoteIP


RemotePortプロパティ

Remoteソケットのポート番号を設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.RemotePort [ = value]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
value | Remoteソケットのポート番号を指定します。 |

解説

Remoteソケットのポート番号（アドレス）です。

ポート番号における注意については、LocalPortプロパティと同様です。

サーバ・ソケットにおいては意味のないプロパティとなります。

例

サンプルコード

nRemotePort = KnSocket1.RemotePort


SocketPositionプロパティ

サーバかクライアントのいずれかを設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.SocketPosition [ = number ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
number | サーバかクライアントのいずれかを定数値KnSocketPositionで指定します。 |

解説

サーバかクライアントのいずれかを設定します。

例

サンプルコード

KnSocket1.ReceivedDataType = KnSoketCLIENT

KnSocket1.ReceivedDataType = 1


Socketsプロパティ

ソケットオブジェクトのコレクションを取得します。

構文

object.Sockets(nIndex)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットオブジェクト参照インデックスです。 |

解説

ソケットオブジェクト（KnSocketObject）のコレクションを参照します。

STREAM接続のサーバーでは、Connectイベントから取得（１～）します。

DGRAM接続、およびSTREAM接続のクライアントでは常に０です。

例

サンプルコード

Private Sub KnSocket1_SelectNotify(ByVal nIndex As Integer, ByVal nSelectID As Integer, ByVal vSelectData As Variant)

Debug.Print "Dispatch:", nIndex, nSelectID

KnSocket1.Sockets(nIndex).SendText vSelectData

End Sub


SocketTypeプロパティ

ソケットの接続タイプ（STREAM接続かDGRAM接続のいずれか）を設定、または取得します。

Openメソッドのパラメータとして参照されます。

構文

object.SocketType [ = number ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
number | ソケットの接続タイプを定数値KnSocketTypeで指定します。 |

解説

ソケットの接続タイプ（STREAM接続かDGRAM接続のいずれか）を設定します。

例

サンプルコード

KnSocket1.SocketType = KnSocketSTREAM

KnSocket1.SocketType = 0


プロパティ一覧

アルファベット昇順プロパティ一覧

プロパティ | 説明 | 備考
OptionReceiveBufferSize | ソケットオプションの受信用のバッファサイズ |
OptionSendBufferSize | ソケットオプションの送信用のバッファサイズ |
ReceivedDataType | 受信時の受信データタイプ |


OptionReceiveBufferSizeプロパティ

ソケットオプションの受信用のバッファ サイズを設定、または取得します。

構文

object.OptionReceiveBufferSize [ = value ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
value | 受信用のバッファ サイズを示す数値式を指定します。 |

解説

ソケットの受信用のバッファ サイズ（バイト）値です。

既定値は、8192バイトです。

例

サンプルコード

KnSocket1.Sockets(nIndex). OptionReceiveBufferSize = 32768


OptionSendBufferSizeプロパティ

ソケットオプションの送信用のバッファ サイズを設定、または取得します。

構文

object.OptionSendBufferSize [ = value ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
value | 送信用のバッファ サイズを示す数値式を指定します。 |

解説

ソケットの送信用のバッファ サイズ（バイト）値です。

既定値は、8192バイトです。

例

サンプルコード

KnSocket1.Sockets(nIndex). OptionSendBufferSize = 32768


ReceivedDataTypeプロパティ

受信時における受信データのタイプを設定、または取得します。

構文

object.ReceivedDataType [ = number ]

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
number | 受信時における受信データのタイプを定数値KnSocketDataTypeで指定します。 |

解説

受信データを指定のデータタイプとして、受信することを指定します。

また、受信データは対応する受信イベントプロシジャにより受け取ることができます。

このプロパティは、KnSocketコントロールのReceivedDataTypeにより初期化されますが、その後はKnSocketObjec別に変更することが可能です。

注意事項

送信データのタイプと、受信するReceivedDataTypeプロパティが矛盾すると受信イベントプロシジャを呼び出せず、受信エラ－となります。

例

サンプルコード

KnSocket1.Sockets(nIndex). ReceivedDataType = KnSocketTEXT

KnSocket1.Sockets(nIndex). ReceivedDataType = 1


メソッド一覧

アルファベット昇順メソッド一覧

メソッド | 説明 | 備考
Close | ソケットのクローズ |
GetHandle | Windowsソケットハンドルの取得 |
MakeReceivedFile | 受信ファイルの作成 |
Open | ソケットのオープン |
SelectRequest | 全コネクトソケットの通知要求 | STREAM接続サーバ用
Send | バイナリデータの送信 |
SendEx | バイナリデータの送信 | バリアント形式
SendData | バリアントデータの送信 |
SendFile | ファイルの送信 |
SendOutFile | ファイルデータの送信 |
SendPacked | パックドバイナリデータの送信 |
SendPackedEx | パックドバイナリデータの送信 | バリアント形式
SendText | テキストデータの送信 |


Closeメソッド

KnSocketコントロールをクローズします。

構文

bResult = object.Close()

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |

解説

STREAM接続においては、コネクトも解除されます。

例

サンプルコード

KnSocket1.Close


GetHandleメソッド

Windowsソケットハンドルを取得します。

構文

hSocket = object.GetHandle()

指定項目 | 内容 | 備考
hSocket | Windowsソケットハンドルを格納する変数名を指定します。 |
object | オブジェクトを指すオブジェクト式です。 |

解説

既定のソケットを対象にWindowsソケットハンドルを取得します。

既定のソケットインデックスは、STREAM接続のサーバでは1、その他では0です。

これは、接続対象が１つの場合の略記法であり、下記の記述と同等です。

STREAM接続のサーバ： object.Sockets(1).GetHandle

その他： object.Sockets(0).GetHandle

詳細は、KnSocketObjectのGetHandle メソッドを参照してください。

例

サンプルコード

hSocket = KnSocket1.GetHandle()


MakeReceivedFileメソッド

受信ファイルを作成します。

構文

bResult = object.MakeReceivedFile (strPath)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
strPath | 作成ファイルを指定します。 |

解説

既定のソケットを対象に受信ファイルを作成します。

既定のソケットインデックスは、STREAM接続のサーバでは1、その他では0です。

これは、接続対象が１つの場合の略記法であり、下記の記述と同等です。

STREAM接続のサーバ： object.Sockets(1).MakeReceivedFile

その他： object.Sockets(0).MakeReceivedFile

詳細は、KnSocketObjectのMakeReceivedFile メソッドを参照してください。

例

サンプルコード

bResult = KnSocket1.MakeReceivedFile (strPath)


Openメソッド

KnSocketコントロールをオープンします。

構文

bResult = object.Open()

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |

解説

STREAM接続の場合、サーバ・ソケットにおいては、コネクト要求の準備であり、クライアント・ソケットにおいてはコネクト要求を意味します。

よって、サーバとクライアントの双方がオープンすることではじめてコネクトが実現します。またこのとき、Connectイベントが発生します。

DGRAM接続の場合、サーバ、クライアントのどちらも通信の準備を整えます。

一般に通信は、クライアント・ソケットのデータ送信（送信メソッド）で、開始されます。

例

サンプルコード

KnSocket1.Open


SelectRequestメソッド

全コネクトソケットの通知を要求します。

構文

nSelect = object.SelectRequest(nSelectID, vSelectData)

指定項目 | 内容 | 備考
nSelect | 全コネクトソケットの総数を格納する変数名を指定します。 |
object | オブジェクトを指すオブジェクト式です。 |
nSelectID | SelectNotifyイベントへの通知リクエストＩＤを指定します。 |
vSelectData | SelectNotifyイベントへの通知データを指定します。 |

解説

全コネクトソケットのソケットインデックスの通知を要求します。

通知は、SelectNotifyイベントにより受け取ります。

STREAM接続サーバにおける、メッセージのディスパッチ機能に対応します。

例

サンプルコード

nSelect = KnSocket1.SelectRequest(nSelectID, vSelectData)


Sendメソッド

バイナリデータを送信します。

構文

bResult = object.Send (pbstrData, nData)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
pbstrData | 送信データを指定します。 |
nData | 送信データのサイズを指定します。 |

解説

既定のソケットを対象にバイナリデータを送信します。

既定のソケットインデックスは、STREAM接続のサーバでは1、その他では0です。

これは、接続対象が１つの場合の略記法であり、下記の記述と同等です。

STREAM接続のサーバ： object.Sockets(1).Send

その他： object.Sockets(0).Send

詳細は、KnSocketObjectのSend メソッドを参照してください。

例

サンプルコード

bResult = KnSocket1.Send (pbstrData, nData)


SendExメソッド

バイナリデータをバリアント形式で送信します。

構文

bResult = object.SendEx (vDataBinary, nDataBynary)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
vDataBinary | 送信データを指定します。 |
nDataBynary | 送信データのサイズを指定します。 |

解説

SendExメソッドは、Send メソッドのバリアントインタフェース版です。

送信データの内容（バイナリデータ）は、バリアントの文字列データ（BSTR）として指定します。

例

サンプルコード

bResult = KnSocket1.SendEx (vDataBinary, nDataBynary)


SendDataメソッド

バリアントデータを送信します。

構文

bResult = object.SendData (vData)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
vData | 送信バリアントデータを指定します。 |

解説

既定のソケットを対象にバリアントデータを送信します。

既定のソケットインデックスは、STREAM接続のサーバでは1、その他では0です。

これは、接続対象が１つの場合の略記法であり、下記の記述と同等です。

STREAM接続のサーバ： object.Sockets(1). SendData

その他： object.Sockets(0). SendData

詳細は、KnSocketObjectのSendData メソッドを参照してください。

例

サンプルコード

KnSocket1.SendData "---------------- 整数型"

Dim nX As Integer

nX = 32767

KnSocket1.SendData nX

KnSocket1.SendData "---------------- 一次元配列：整数型"

Dim xArrayInteger(5) As Integer

For i = 0 To 5

xArrayInteger(i) = i

Next i

KnSocket1.SendData xArrayInteger


SendFileメソッド

ファイルを送信します。

構文

bResult = object.SendFile (strPath, strCaption)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
strPath | 送信ファイルを指定します。 |
strCaption | 送信ファイル識別用のキャプションを指定します。 |

解説

既定のソケットを対象にファイルを送信します。

既定のソケットインデックスは、STREAM接続のサーバでは1、その他では0です。

これは、接続対象が１つの場合の略記法であり、下記の記述と同等です。

STREAM接続のサーバ： object.Sockets(1). SendFile

その他： object.Sockets(0). SendFile

詳細は、KnSocketObjectのSendFile メソッドを参照してください。

例

サンプルコード

bResult = KnSocket1.SendFile (strPath, strCaption)


SendOutFileメソッド

ファイルデータを送信します。

構文

bResult = object.SendOutFile (strPath)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
strPath | 送信ファイルを指定します。 |

解説

既定のソケットを対象にファイルデータを送信します。

既定のソケットインデックスは、STREAM接続のサーバでは1、その他では0です。

これは、接続対象が１つの場合の略記法であり、下記の記述と同等です。

STREAM接続のサーバ： object.Sockets(1). SendOutFile

その他： object.Sockets(0). SendOutFile

詳細は、KnSocketObjectのSendOutFile メソッドを参照してください。

例

サンプルコード

bResult = KnSocket1.SendOutFile (strPath)


SendPackedメソッド

パックドバイナリデータを送信します。

構文

bResult = object.SendPacked (pbstrData, nData, nFragment)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
pbstrData | 送信データを指定します。 |
nData | 送信データのサイズを指定します。 |
nFragment | 送信データのフラグメント化サイズを指定します。 |

解説

既定のソケットを対象にパックドバイナリデータを送信します。

既定のソケットインデックスは、STREAM接続のサーバでは1、その他では0です。

これは、接続対象が１つの場合の略記法であり、下記の記述と同等です。

STREAM接続のサーバ： object.Sockets(1). SendPacked

その他： object.Sockets(0). SendPacked

詳細は、KnSocketObjectのSendPacked メソッドを参照してください。

例

サンプルコード

bResult = KnSocket1.SendPacked (pbstrData, nData, nFragment)


SendPackedExメソッド

パックドバイナリデータをバリアント形式で送信します。

構文

bResult = object.SendPackedEx (vDataBinary, nDataBinary, nFragment)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
vDataBinary | 送信データを指定します。 |
nDataBinary | 送信データのサイズを指定します。 |
nFragment | 送信データのフラグメント化サイズを指定します。 |

解説

SendPackedExメソッドは、SendPacked メソッドのバリアントインタフェース版です。

送信データの内容（バイナリデータ）は、バリアントの文字列データ（BSTR）として指定します。

例

サンプルコード

bResult = KnSocket1.SendPackedEx (pvDataBinary, nDataBinary, nFragment)


SendTextメソッド

テキストデータを送信します。

構文

bResult = object.SendText (strText)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
strText | 送信文字列を指定します。 |

解説

既定のソケットを対象にテキストデータを送信します。

既定のソケットインデックスは、STREAM接続のサーバでは1、その他では0です。

これは、接続対象が１つの場合の略記法であり、下記の記述と同等です。

STREAM接続のサーバ： object.Sockets(1). SendText

その他： object.Sockets(0). SendText

詳細は、KnSocketObjectのSendText メソッドを参照してください。

例

サンプルコード

Dim strX As String

strX = "Knowlbo(TM)/OCX Communication Collection KnSocket"

KnSocket1.SendText strX


メソッド一覧

アルファベット昇順メソッド一覧

メソッド | 説明 | 備考
Disconnect | ソケットの強制ディスコネクト |
GetHandle | Windowsソケットハンドルの取得 |
GetRemoteIP | RemoteソケットIPアドレスの取得 |
IsDisconnectByRemote | RemoteソケットのクローズによるDisconnectイベント発生のチェック |
MakeReceivedFile | 受信ファイルの作成 |
Send | バイナリデータの送信 |
SendEx | バイナリデータの送信 | バリアント形式
SendData | バリアントデータの送信 |
SendFile | ファイルの送信 |
SendOutFile | ファイルデータの送信 |
SendPacked | パックドバイナリデータの送信 |
SendPackedEx | パックドバイナリデータの送信 | バリアント形式
SendText | テキストデータの送信 |


Disconnectメソッド

ソケットを強制的にディスコネクトします。

構文

object.Disconnect

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |

解説

コネクトしているソケットを強制的にディスコネクトします。

STREAM接続サーバにおいてのみ有効です。

例

サンプルコード

KnSocket1.Sockets(nIndex). Disconnect


GetHandleメソッド

Windowsソケットハンドルを取得します。

構文

hSocket = object.GetHandle()

指定項目 | 内容 | 備考
hSocket | Windowsソケットハンドルを格納する変数名を指定します。 |
object | オブジェクトを指すオブジェクト式です。 |

解説

Windowsソケットハンドルを取得します。

KnSocketコントロールに対し、Windowsソケットハンドルは直接利用できませんが、他のツール等での利用に対応するものです。

例

サンプルコード

Dim hSocket As Long

hSocket = KnSocket1.Sockets(nIndex). GetHandle


MakeReceivedFileメソッド

受信ファイルを作成します。

構文

bResult = object.MakeReceivedFile (strPath)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
strPath | 作成ファイルを指定します。 |

解説

ReceiveFileイベントにより受信したファイルデータを任意のファイルに復元（作成）します。

例

サンプルコード

Private Sub KnSocket1_ReceiveFile(ByVal nIndex As Integer, ByVal pszCaption As String)

Debug.Print "ReceiveFile", pszCaption

KnSocket1.MakeReceivedFile (pszCaption)

End Sub


GetRemoteIPメソッド

RemoteソケットのIPアドレスを取得します。

構文

strIP = object.GetRemoteIP ()

指定項目 | 内容 | 備考
strIP | RemoteソケットのIPアドレスを格納する変数名を指定します。 |
object | オブジェクトを指すオブジェクト式です。 |

解説

接続しているRemoteソケットのIPアドレスを取得します。

STREAM接続サーバのWorkerソケットにおいてのみ有効です。

例

サンプルコード

Dim strIP As String

strIP = KnSocket1.Sockets(nIndex). GetRemoteIP


IsDisconnectByRemoteメソッド

DisconnectイベントがRemoteソケットのクローズにより発生したものであるかチェックします。

構文

bByRemote = object.IsDisconnectByRemote()

指定項目 | 内容 | 備考
bByRemote | RemoteソケットによりDisconnectイベントが発生したかどうかのチェック値を格納する変数名を指定します。 | TrueでRemoteソケットのクローズによりDisconnectイベントが発生したことを示す。
object | オブジェクトを指すオブジェクト式です。 |

解説

DisconnectイベントがRemoteソケットか、あるいはLocalソケットのクローズにより発生したかをチェックします。

最近のDisconnectイベントを対象とし、Disconnectイベントが発生していない場合はFalseを返します。

例

サンプルコード

Private Sub KnSocket1_Disconnect(ByVal nIndex As Integer)

Debug.Print "nSocket1_Disconnect:", KnSocket1.Sockets(nIndex).IsDisconnectByRemote

End Sub


Sendメソッド

バイナリデータを送信します。

構文

bResult = object.Send (pbstrData, nData)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
pbstrData | 送信データを指定します。 |
nData | 送信データのサイズを指定します。 |

解説

バイナリデータを送信します。

送信データは接続先のKnSocketコントロールにおけるReceiveイベントにより受信できます。また、受信KnSocketコントロールのReceivedDataTypeプロパティには、KnSocketBINARYを設定しておきます。

基本事項については、バイナリデータの送受信を参照してください。

例

サンプルコード

Dim strBinary As String

strBinary = "１２３４５" + Chr(0) + "６７８９０"

KnSocket1.Sockets(nIndex).Send strBinary, (10 + 1 + 10) + 1


SendExメソッド

バイナリデータをバリアント形式で送信します。

構文

bResult = object.SendEx (vDataBinary, nDataBynary)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
vDataBinary | 送信データを指定します。 |
nDataBynary | 送信データのサイズを指定します。 |

解説

SendExメソッドは、Sendメソッドのバリアントインタフェース版です。

送信データの内容（バイナリデータ）は、バリアントの文字列データ（BSTR）として指定します。

例

サンプルコード

Dim strBinary As String

strBinary = "１２３４５" + Chr(0) + "６７８９０"

nBinary = (10 + 1 + 10) + 1

KnSocket1.Sockets(nIndex).SendEx strBinary, nBinary

Dim vBinary As Variant

vBinary = strBinary

KnSocket1.Sockets(nIndex).SendEx vBinary, nBinary


SendDataメソッド

バリアントデータを送信します。

構文

bResult = object.SendData (vData)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
vData | 送信バリアントデータを指定します。 |

解説

バリアントデータを送信します。

送信データは接続先のKnSocketコントロールのReceiveDataイベント受信できます。また、受信KnSocketコントロールのReceivedDataTypeプロパティには、KnSocketVARIANTを設定しておきます。

基本事項については、バリアントデータの送受信を参照してください。

例

サンプルコード

KnSocket1.Sockets(nIndex).SendData "整数型"

Dim nX As Integer

nX = 32767

KnSocket1.Sockets(nIndex).SendData nX


SendFileメソッド

ファイルを送信します。

構文

bResult = object.SendFile (strPath, strCaption)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
strPath | 送信ファイルを指定します。 |
strCaption | 送信ファイル識別用のキャプションを指定します。 |

解説

ファイルを送信します。

送信ファイルは接続先のKnSocketコントロールのReceiveFileイベント受信できます。また、受信KnSocketコントロールのReceivedDataTypeプロパティには、KnSocketFILEを設定しておきます。

ReceiveFileイベントで、MakeReceivedFileメソッドを利用することで任意のファイルに復元できます。

基本事項については、ファイルデータの送受信を参照してください。

注意事項

連続したSendFileメソッドの呼び出しでは、送信系のエラーが発生することがあります。この場合は、NumOfSendBufプロパティを適当に大きくすることで回避可能です。

DGRAM接続では転送ファイルのサイズが8Kバイトを超える場合は、送信が成功しないことが考えられます。この場合にはSTREAM接続を利用してください。

例

下記のサンプルでは、送信KnSocketでファイル"c:\Data.tst"をキャプション"Data.tst"で送信し、受信KnSocketのReceiveFileイベントで受信、およびそのファイルをMakeReceivedFileメソッドで作成しています。また作成ファイル名には、受信キャプション（"Data.tst"）を利用しています。

サンプルコード（送信KnSocket側）

KnSocket1.Sockets(nIndex).SendFile "c:\Data.tst", "Data.tst"

サンプルコード（受信KnSocket側）

Private Sub KnSocket2_ReceiveFile(ByVal nIndex As Integer, ByVal pszCaption As String)

KnSocket2.Sockets(nIndex).MakeReceivedFile (pszCaption)

End Sub


SendOutFileメソッド

ファイルデータを送信します。

構文

bResult = object.SendOutFile (strPath)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
strPath | 送信ファイルを指定します。 |

解説

ファイルデータ（ファイルの内容）を送信します。

送信データは接続先のKnSocketコントロールにおける受信イベントにより受信できます。

受信データのタイプが、KnSocketBINARY、あるいはKnSocketTEXTの場合に有効です。

例

サンプルコード

bResult = KnSocket1.Sockets(nIndex).SendOutFile (strPath)


SendPackedメソッド

パックドバイナリデータを送信します。

構文

bResult = object.SendPacked (pbstrData, nData, nFragment)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
pbstrData | 送信データを指定します。 |
nData | 送信データのサイズを指定します。 |
nFragment | 送信データのフラグメント化サイズを指定します。 |

解説

パックドバイナリデータを送信します。

送信データは接続先のKnSocketコントロールのReceivePackedイベント受信できます。また、受信KnSocketコントロールのReceivedDataTypeプロパティには、KnSocketPACKEDを設定しておきます。

Sendメソッドとの違いは、データを任意のサイズで断片（フラグメント）化して送信することです。また、フラグメント化したデータは、KnSocketコントロールにおけるReceivePackedイベントにおいて復元されます。

STREAM接続において、大きなバイナリデータを送信する場合に、SendPackedメソッドを利用することで、送信単位での受信が可能となります。

基本事項については、パックドバイナリデータの送受信を参照してください。

例

サンプルコード

bResult = KnSocket1.Sockets(nIndex).SendPacked (pbstrData, nData, nFragment)


SendPackedExメソッド

パックドバイナリデータをバリアント形式で送信します。

構文

bResult = object.SendPackedEx (vDataBinary, nDataBinary, nFragment)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
vDataBinary | 送信データを指定します。 |
nDataBinary | 送信データのサイズを指定します。 |
nFragment | 送信データのフラグメント化サイズを指定します。 |

解説

SendPackedExメソッドは、SendPackedメソッドのバリアントインタフェース版です。

送信データの内容（バイナリデータ）は、バリアントの文字列データ（BSTR）として指定します。

例

サンプルコード

bResult = KnSocket1.Sockets(nIndex).SendPackedEx (pvDataBinary, nDataBinary, nFragment)


SendTextメソッド

テキストデータを送信します。

構文

bResult = object.SendText (strText)

指定項目 | 内容 | 備考
bResult | 処理結果を格納する変数名を指定します。 | Trueで処理成功。
object | オブジェクトを指すオブジェクト式です。 |
strText | 送信文字列を指定します。 |

解説

テキストデータを送信します。

送信データは接続先のKnSocketコントロールのReceiveTextイベントで受信できます。また、受信KnSocketコントロールのReceivedDataTypeプロパティには、KnSocketTEXTを設定しておきます。

例

サンプルコード

Dim strX As String

strX = "Knowlbo(TM)/OCX Communication Collection KnSocket"

KnSocket1.Sockets(nIndex).SendText strX


イベント一覧

アルファベット昇順イベント一覧

イベント | 説明 | 備考
Connect | Remoteソケットとのコネクト通知 |
Disconnect | Remoteソケットとのディスコネクト通知 |
Receive | バイナリデータの受信通知 |
ReceiveEx | バイナリデータの受信通知 | バリアント形式
ReceiveData | バリアントデータの受信通知 |
ReceiveFile | ファイルの受信通知 |
ReceivePacked | パックドバイナリデータの受信通知 |
ReceivePackedEx | パックドバイナリデータの受信通知 | バリアント形式
ReceiveProgress | 受信バイト数とパーセンテージの通知 |
ReceiveText | テキストデータの受信通知 |
SelectNotify | コネクトソケットの通知 | SelectRequestメソッドによる
SendProgress | 送信メソッドにおける送信バイト数とパーセンテージの通知 |
SocketError | ソケット・エラーの通知 |


Connectイベント

STREAM接続において、コネクトが成功したことを通知します。

構文

Private Sub Object_Connect(ByVal nIndex As Integer, ByVal bConnect As Boolean)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
bConnect | コネクト結果のブール値です。 | Trueでコネクトが成功（完了）したことを示します。

解説

クライアント・ソケットでのOpenメソッドにより、クライアントとサーバはコネクトされます。この時、それぞれにConnectイベントが通知されます。

このイベントは、Disconnectイベントと同様、コネクト状態の管理に利用できます。

サーバ・ソケットでは、クライアントからのコネクト要求に対する処理において、Connectイベントを通知し、bConnectによりそのコネクト（処理）の成否を示します。また、コネクト（処理）が失敗した場合は、SocketErrorイベントにてその原因を通知します。

クライアント・ソケットでは、コネクトが成功した場合のみConnectイベントが発生します。コネクトが失敗した場合は、SocketErrorイベントにてその原因を通知します。

ソケットインデックスはSTREAM接続サーバにおいて、接続クライアントを識別するもので、１以上の値となります。（ STREAM接続サーバ以外では常に０です。）

例

サンプルコード

Private Sub KnSocket1_Connect(ByVal nIndex As Integer, ByVal bConnect As Boolean)

Dim nReceivedDataType As Integer

Select Case nIndex

Case 1

nReceivedDataType = KnSocketAUTO

Case 2

nReceivedDataType = KnSocketBINARY

Case 3

nReceivedDataType = KnSocketVARIANT

Case Else

nReceivedDataType = KnSocketAUTO

End Select

KnSocket1.Sockets(nIndex).ReceivedDataType = nReceivedDataType

End Sub


Disconnectイベント

STREAM接続のコネクト状態において、接続がRemoteソケットによりディスコネクト（Closeメソッド）されたことを通知します。また、LocalソケットのCloseメソッドに対しても発生します。

構文

Private Sub Object_Disconnect(ByVal nIndex As Integer)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |

解説

ディスコネクトを通知します。ディスコネクトは、LocalソケットのCloseメソッド、あるいはRemoteソケットのCloseメソッドによるものです。

このイベントは、Connectイベントと同様、コネクト状態の管理に利用できます。

ソケットインデックスはSTREAM接続サーバにおいて、接続クライアントを識別するもので、１以上の値となります。（ STREAM接続サーバ以外では常に０です。）

例

サンプルコード

Private Sub KnSocket1_Disconnect(ByVal nIndex As Integer)

End Sub


Receiveイベント

バイナリデータの受信を通知します。

構文

Private Sub Object_Receive(ByVal nIndex As Integer, pbstrData As String, ByVal nData As Long)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
pbstrData | 受信データです。 |
nData | 受信データサイズです。 |

解説

接続しているKnSocketObjectのReceivedDataTypeプロパティがKnSocketBINARYの場合、このイベントプロシジャで受信データを受け取ります。

送信側のKnSocketObjectのSendメソッドに対応する受信イベントです。

ソケットインデックスはSTREAM接続サーバにおいて、接続クライアントを識別するもので､１以上の値となります。（STREAM接続サーバ以外では常に０です。）

例

サンプルコード

Private Sub KnSocket1_Receive(ByVal nIndex As Integer, pbstrData As String, ByVal nData As Long)

End Sub


ReceiveExイベント

バイナリデータの受信をバリアント形式で通知します。

構文

Private Sub Object_ReceiveEx(ByVal nIndex As Integer, ByVal vDataBinary As Variant, ByVal nDataBinary As Long)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
vDataBinary | 受信データです。 |
nDataBinary | 受信データサイズです。 |

解説

ReceiveExイベントは、Receiveイベントのバリアントインタフェース版です。

ReceiveExイベントは、ReceiveExEventプロパティがTrueの場合のみ発生します。

受信データ（バリアント）のデータタイプは文字列型（BSTR）です。受信データの内容はバリアントの文字列データとして存在します（内容はバイナリデータです）。

例

サンプルコード

Private Sub KnSocket1_ReceiveEx(ByVal nIndex As Integer, ByVal vDataBinary As Variant, ByVal nDataBinary As Long)

End Sub


ReceiveDataイベント

バリアントデータの受信を通知します。

構文

Private Sub Object_ReceiveData(ByVal nIndex As Integer, ByVal vData As Variant)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
vData | 受信データです。 |

解説

接続しているKnSocketObjectのReceivedDataTypeプロパティがKnSocketVARIANTの場合、このイベントプロシジャで受信データを受け取ります。

送信側のKnSocketObjectのSendDataメソッドに対応する受信イベントです。

ソケットインデックスはSTREAM接続サーバにおいて、接続クライアントを識別するもので、１以上の値となります。（ STREAM接続サーバ以外では常に０です。）

例

サンプルコード

Private Sub KnSocket1_ReceiveData(ByVal nIndex As Integer, ByVal vData As Variant)

If VarType(vData) < vbArray Then

Debug.Print vData

Print vData

Else

n = UBound(vData)

For i = 0 To n

Debug.Print vData(i)

Print vData(i)

Next i

End If

End Sub


ReceiveFileイベント

ファイルの受信を通知します。

構文

Private Sub Object_ReceiveFile(ByVal nIndex As Integer, ByVal pszCaption As String)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
pszCaption | 受信ファイル識別用キャプションです。 |

解説

接続しているKnSocketObjectのReceivedDataTypeプロパティがKnSocketFILEの場合、このイベントプロシジャで受信データを受け取ります。

送信側のKnSocketObjectのSendFileメソッドに対応する受信イベントです。

ソケットインデックスはSTREAM接続サーバにおいて、接続クライアントを識別するもので、１以上の値となります。（ STREAM接続サーバ以外では常に０です。）

受信したファイルの作成（復元）は、KnSocketObjectのMakeReceivedFileメソッドによります。

例

サンプルコード

Private Sub KnSocket1_ReceiveFile(ByVal nIndex As Integer, ByVal pszCaption As String)

AddLogList nIndex, "-- FILE " + pszCaption

CommonDialog1.CancelError = True

On Error GoTo ErrHandler

CommonDialog1.Flags = cdlOFNHideReadOnly '-- フィルタ設定

CommonDialog1.Filter = "すべてのファイル (*.*)|*.*|" & "テキスト ファイル (*.txt)|*.txt|"

CommonDialog1.FileName = pszCaption

CommonDialog1.FilterIndex = 2 '-- 既定フィルタ："テキスト ファイル"

CommonDialog1.ShowSave '-- [ファイル名を付けて保存]ダイアログボックス表示

'----

KnSocket1.Sockets(nIndex).MakeReceivedFile (CommonDialog1.FileName)

Exit Sub

ErrHandler:

'---- [キャンセル]

End Sub


ReceivePackedイベント

パックドバイナリデータの受信を通知します。

構文

Private Sub Object_ReceivePacked(ByVal nIndex As Integer, pbstrData As String, ByVal nData As Long)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
pbstrData | 受信データです。 |
nData | 受信データサイズです。 |

解説

接続しているKnSocketObjectのReceivedDataTypeプロパティがKnSocketPACKEDの場合、このイベントプロシジャで受信データを受け取ります。

送信側のKnSocketObjectのSendPackedメソッドに対応する受信イベントです。

ソケットインデックスはSTREAM接続サーバにおいて、接続クライアントを識別するもので、１以上の値となります。（STREAM接続サーバ以外では常に０です。）

受信データサイズは、送信データサイズと等しく、BytesReceivedプロパティ以上の受信サイズのデータも復元可能です。

例

サンプルコード

Private Sub KnSocket1_ReceivePacked(ByVal nIndex As Integer, pbstrData As String, ByVal nData As Long)

End Sub


ReceivePackedExイベント

パックドバイナリデータの受信をバリアント形式で通知します。

構文

Private Sub Object_ReceivePackedEx(ByVal nIndex As Integer, ByVal vDataBinary As Variant, ByVal nDataBinary As Long)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
vDataBinary | 受信データです。 |
nDataBinary | 受信データサイズです。 |

解説

ReceivePackedExイベントは、ReceivePackedイベントのバリアントインタフェース版です。

ReceivePackedExイベントは、ReceivePackedExEventプロパティがTrueの場合のみ発生します。

例

サンプルコード

Private Sub KnSocket1_ReceiveEx(ByVal nIndex As Integer, ByVal vDataBinary As Variant, ByVal nDataBinary As Long)

End Sub


ReceiveProgressイベント

受信バイト数とパーセンテージを通知します。

構文

Private Sub Object_ReceiveProgress(ByVal nIndex As Integer, ByVal nProgress As Long, ByVal nPercent As Integer)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
nProgress | 受信バイト数です。 |
nPercent | 受信データのパーセンテージです。 |

解説

次の送信メソッドに対応する受信バイト数とパーセンテージを通知します。

SendFileメソッド

SendPackedメソッド

受信バイト数は、既に受信済みのデータサイズであり、パーセンテージは全受信データサイズに対する受信済みデータサイズの割合を示します。

イベントが発生するタイミングは、KnSocket内部における、ネットワークからの受信時です。

ちなみに同情報は、ソケットモニタ・ダイアログにも表示されます。

例

サンプルコード

Private Sub KnSocket1_ReceiveProgress(ByVal nIndex As Integer, ByVal nProgress As Long, ByVal nPercent As Integer)

Debug.Print "Receive Progress", nProgress, nPercent

End Sub


ReceiveTextイベント

テキストデータの受信を通知します。

構文

Private Sub Object_ReceiveText(ByVal nIndex As Integer, ByVal pszText As String)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
pszText | 受信テキストです。 |

解説

接続しているKnSocketObjectのReceivedDataTypeプロパティがKnSocketTEXTの場合、このイベントプロシジャで受信データを受け取ります。

送信側のKnSocketObjectのSendTextメソッドに対応する受信イベントです。

ソケットインデックスはSTREAM接続サーバにおいて、接続クライアントを識別するもので、１以上の値となります。（ STREAM接続サーバ以外では常に０です。）

例

サンプルコード

Private Sub KnSocket1_ReceiveText(ByVal nIndex As Integer, ByVal pszText As String)

End Sub


SelectNotifyイベント

コネクトソケットのソケットインデックスを通知します。

構文

Private Sub Object_SelectNotify(ByVal nIndex As Integer, ByVal nSelectID As Integer, ByVal vSelectData As Variant)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
nSelectID | SelectRequestメソッドからの通知リクエストＩＤです。 |
vSelectData | SelectRequestメソッドからの通知データです。 |

解説

SelectRequestメソッドによる全コネクトソケットの通知要求に対応し、各コネクトソケットのソケットインデックスを通知します。また、SelectRequestメソッドからの通知リクエストＩＤと通知データも受け取ります。コネクトソケットの数だけ通知されます。

ソケットインデックスはSTREAM接続サーバにおいて、接続クライアントを識別するもので､１以上の値となります。

例

サンプルコード

Private Sub KnSocket1_SelectNotify(ByVal nIndex As Integer, ByVal nSelectID As Integer, ByVal vSelectData As Variant)

Select Case nSelectID

Case nSelectID_Broadcast

KnSocket1.Sockets(nIndex).SendText "(^^)" + vSelectData

Case Else

Exit Sub

End Select

End Sub


SendProgressイベント

送信メソッドにおける送信バイト数とパーセンテージを通知します。

構文

Private Sub Object_SendProgress(ByVal nIndex As Integer, ByVal nProgress As Long, ByVal nPercent As Integer)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
nProgress | 送信バイト数です。 |
nPercent | 送信データのパーセンテージです。 |

解説

送信メソッドにおける送信バイト数とパーセンテージを通知します。

送信バイト数は、既に送信済みのデータサイズであり、パーセンテージは全送信データサイズに対する送信済みデータサイズの割合を示します。

イベントが発生するタイミングは、KnSocket内部における、ネットワークへの（連続）送信の終了時です。連続送信中は性能を優先し、イベントを発行しません。

ちなみに同情報は、ソケットモニタ・ダイアログにも表示されます。

例

サンプルコード

Private Sub KnSocket1_SendProgress(ByVal nIndex As Integer, ByVal nProgress As Long, ByVal nPercent As Integer)

Debug.Print "Send Progress", nProgress, nPercent

End Sub


SocketErrorイベント

KnSocketコントロールにおけるエラーを通知します。

構文

Private Sub Object_SocketError(ByVal nIndex As Integer, ByVal nError As Integer, ByVal pszError As String)

指定項目 | 内容 | 備考
object | オブジェクトを指すオブジェクト式です。 |
nIndex | ソケットインデックスです。 |
nError | エラー番号です。 |
pszError | エラーメッセージです。 |

解説

ソケットにおけるエラーを通知します。

ソケット・エラー番号、およびエラーメッセージについては、通知エラー一覧を参照してください。

例

サンプルコード

Private Sub KnSocket1_SocketError(ByVal nIndex As Integer, ByVal nError As Integer, ByVal pszError As String)

End Sub


テクニカルサポートについて

Knowlbo(R)/OCX製品のご使用中に、このオンラインヘルプやインストールディレクトリ下にある「README.WRI」 に記載されている内容で解決できない問題が発生した場合には、弊社カスタマ・コミュニケーションズまでお問い合わせください。お問い合わせの際には、下記事項を確認の上、電子メールにてお送りくださるようお願い申し上げます。また、弊社ホームページにオンラインサポートページも設けております。（電話、ファックスなどによるテクニカルなお問い合わせは、お受けしていません。）

なお、お問い合わせいただいた内容により、回答に数日かかることがございます。あらかじめご了承ください。

また、寄せられたご質問については、他のお客様の参考とするため、断りなく雑誌やその他メディア、弊社ホームページなどで公開させていただくことがあります。

お送りいただいたリストやファイルなどで公開できないものについては、その旨を明示しておいてください。

また、お送りいただいたリスト，ファイルについては原則として返却いたしません。ご了承ください。

コントロールコンテナの使用方法やプログラミングに関するご質問などにつきましては、ご容赦いただいております。あらかじめご了承ください。

お問い合わせの場合に必要な情報

お問い合わせの場合、お手数ですが下記事項を電子メールに明記してお問い合わせください。

（法人の場合）法人名、部署名
ユーザ名
連絡先住所
電話番号
FAX番号
電子メールアドレス
Knowlbo(R)/OCX製品名および製品のバージョン

エクスプローラで製品を選択し、右クリックをして表示されるメニューからプロパティを選択すると製品のプロパティダイアログが表示されます。そこに記載されているファイルバージョンをご明記ください。

シリアルNO
コントロール・コンテナ製品名、バージョン
OS名、バージョン
使用PC機種名
お問い合わせ内容


プロジェクトへの組み込みと削除について

Visual Basicの場合

Visual Basicのプロジェクトへの組み込み

タイリング ボタンのプロジェクトへの組み込みは、以下の手順で行います。

（１）Visual Basicの【プロジェクト(P)】メニューから【コンポーネント(O)】を選択します。

（２）【コントロール】タグ内リストボックスから｢クイック ソケット｣コントロールを選択します。｢クイック ソケット｣コントロールの名称は以下のように表示されます。

表示される名称 | Knowlbo/OCX Quick Socket 2.x
コントロール | KnSocket.OCX

（３）｢クイック ソケット｣コントロールのチェックボックスをチェックし【OK】ボタンをクリックします。

（４）ツールボックスに｢クイック ソケット｣コントロールのアイコンが表示されれば、プロジェクトへの組み込みは完了です。

Visual Basicのプロジェクトからの削除

クイック ソケットのプロジェクトからの削除は、以下の手順で行います。

（１）フォーム上からコントロールを削除します。

（２）)Visual Basicの【プロジェクト(P)】メニューから【コンポーネント(C)】を選択します。

（３）【コントロール】タグ内リストボックスから｢クイック ソケット｣コントロールを選択します。

（４）｢クイック ソケット｣コントロールのチェックボックスを未チェック状態にして【OK】ボタンをクリックします。

（５）ツールボックスから｢クイック ソケット｣コントロールのアイコンが削除されれば、プロジェクトからの削除は完了です。

Visual C++ 場合

下記の手順はVisual C++ 6.0の例です。

Visual C++のプロジェクトへの組み込み

（１）Visual C++ の【プロジェクト(P)】メニューから【プロジェクトへ追加(A)】プルダウンメニューを選び、その中の【コンポーネント(P)】を選択します。

（２）「コンポーネントおよびコントロールギャラリ」ダイアログが表示されます。

（３）その中のファイルの場所を選択するボックスで「Registered ActiveX Controls」フォルダをクリックします。

（４）ファイルの場所を選択するボックス内に、登録されているコントロールへのショートカットが表示されるので、｢クイック ソケット｣コントロールのショートカットを選択して「挿入（S）」ボタンをクリックします。

（５）確認ダイアログが出ますので、【OK】ボタンをクリックします。

（６）クラスの確認ダイアログが表示されるので、必要に応じてダイアログの内容を変更し、【OK】ボタンをクリックします。

（７）最後に「コンポーネントおよびコントロールギャラリ」ダイアログを【閉じる】ボタンで抜けます。このとき、Class Viewに先ほど選択したコントロールのクラスが追加されれば、プロジェクトへの組み込みは完了です。


Visual C++をコンテナとする場合の注意・補足事項

KnSocketコントロールをVisual C++で利用する場合について補足します。

またここでは、Visual C++のバーション6.0をベースに説明します。

新規プロジェクトを作成する場合の注意

（１）【どの複合ﾄﾞｷｭﾒﾝﾄをｻﾎﾟｰﾄしますか？】では、【ｺﾝﾃﾅ】、【ｺﾝﾃﾅｻｰﾊﾞｰ】のいずれかを選択してください。

（２）【その他どのｻﾎﾟｰﾄをしますか？】では、【ActiveXｺﾝﾄﾛｰﾙ】をチェックしてください。

コントロールのプロジェクトへの追加、およびプロパティとメソッドのインタフェース

KnSocketコントロールをVisual C++プロジェクトへ追加し、プロパティとメソッドを利用する手順は、次の通りです。

（１）【ﾌﾟﾛｼﾞｪｸﾄ／ﾌﾟﾛｼﾞｪｸﾄへ追加／ｺﾝﾎﾟｰﾈﾝﾄおよびｺﾝﾄﾛｰﾙ／Gallery／Registered ActiveX Control／Knowlbo OCX Quick Socket】により、ラップクラス（CKnSocket）を作成します。

（２）ラップクラスのヘッダファイル（knsocketn.h）にはKnSocketコントロールのプロパティとメソッドに対応するのメンバ関数インタフェースが作成され、ソースファイル（knsocket.cpp）にはその実装が作成されています。すなわち、そのインタフェースにより、プロパティとメソッドが利用できます。ただし、プロパティの取得／設定は、Get＜プロパティ＞／Set＜プロパティ＞なるメンバ関数インタフェースになります。

（３）ラップクラスの作成と同時に、ダイアログ・エディタのコントロール・パレットにはKnSocketコントロールが配置されます。そこでKnSocketコントロールを必要とするダイアログに貼り付け、利用することができます。

（４）貼り付けたコントロールは、クラスウィザードにより対応するメンバ変数を作成することで扱うことができます。

イベントのインタフェース

KnSocketコントロールのイベントを利用する手順は、次の通りです。

（１）【表示／Class Wizard】により、クラスウィザード・ダイアログを表示します。

（２）【ﾒｯｾｰｼﾞﾏｯﾌﾟ】の【ｸﾗｽ名】にKnSocketコントロールを含むダイアログボックスのクラスを選択します。

（３）【ｵﾌﾞｼﾞｪｸﾄID】でイベントを取得したいコントロールを選択することで、【ﾒｯｾｰｼﾞ】ボックスに対応するイベント一覧が表示されます。そこで、必要なイベントインタフェースを作成してください。

KnSocketObjectのプロパティとメソッドのインタフェース

KnSocketObjectのプロパティとメソッドに対するラップクラスは、Visual C++では作成されません。そこで、KnSocketObjectに対するラップクラス（CKnSock）を添付ファイルKnSock.h、KnSock.cppに用意しました。

次の手順でプロジェクトへ組み込んでください。

（１）エクスプローラ等により上記添付ファイル（KnSock.h、KnSock.cpp）を対象のプロジェクトファイルにコピーしてください。

（２） 【ﾌﾟﾛｼﾞｪｸﾄ／ﾌﾟﾛｼﾞｪｸﾄへ追加／ﾌｧｲﾙ】により表示されるファイル一覧ダイアログから上記ラップクラス・ファイルを選択し、プロジェクトへ追加します。

（３） Connectイベントハンドラにおいて、接続ソケットに対応するCKnSockオブジェクトを生成します。

m_pKnSock = new CKnSock(m_KnSocket1, nIndex);

m_KnSocket1： KnSocketコントロールのメンバ変数

nIndex： ソケットインデックス

（４）CKnSockのメンバ関数によりKnSocketObjectのプロパティとメソッドを利用します。

BOOL bSendText = m_pKnSock->SendText(pszData);


Internet Explorer をコンテナとする場合の注意・補足事項

KnSocketコントロールを Internet Explorer（IE） で利用する場合について補足します。

バイナリデータの送受信における注意

IInternet Explorerにおけるスクリプト言語 VBScript （Visual Basic Scripting Edition）では、変数のデータ型は常にバリアント型 (Variant) となります。

このため、KnSocketコントロールのメソッドのパラメータはバリアント型から指定の型に、イベントのパラメータは指定の型からバリアント型に変換されます。

バイナリデータの送信メソッドであるSendメソッド、およびSendPackedメソッドは、上記パラメータ型の変換において、型不一致のエラーとなります。

そこで、バイナリデータの送信には、代替メソッドとして次のメソッドを利用してください。

（１）SendEx バイナリデータの送信（バリアント形式）

（２）SendPackedEx パックドバイナリデータの送信（バリアント形式）

また、上記送信メソッドに対応する次の受信イベントを合わせて利用してください。

（１）ReceiveEx バイナリデータの受信通知（バリアント形式）

（２）ReceivePackedEx パックドバイナリデータの受信通知（バリアント形式）

更に、上記受信イベントを有効にするには、次のプロパティを設定してください。

（１）ReceiveExEvent ReceiveExイベントの通知指定

（２）ReceivePackedExEvent ReceivePackedExイベントの通知指定


ファイルの配布について

ランタイム時のファイルの配布について

クイック ソケット Version2は、その開発用インストールＰＣ１台につき１ライセンスを必要とします。

クイック ソケット Version2を組み込んだアプリケーションを配布する場合のランタイムライセンスについては、必要ありません。クイック ソケット Version2は、ランタイムライセンスについてはフリーです。

ActiveXコントロールを使用したアプリケーションをその他のシステムで実行させるためには、その実行に先立ち、使用しているActiveXコントロールのシステム登録を必要とします。通常、アプリケーションのセットアッププログラムを作成し、これに対応します。

Visual Basic付属のディストリビューションウィザードなどのインストーラ作成ツールを利用することで、ActiveXコントロールの登録を含むセットアッププログラムを作成することが可能です。

また、ActiveXコントロールのシステム登録ツール"REGSVR32.EXE"により、手動で登録することも可能です。コマンドプロンプトもしくは「ファイル名を指定して実行」ダイアログより、以下のようにコマンドを実行してください。

REGSRV32 "<パス名>\QuickSocketV2\KnSocket.OCX"

ご注意

本製品のご使用にあたり、上記事項以外は、お客様と弊社との契約事項は特にありません。ただし、「ソフトウェア使用許諾契約」に記載している制限事項は、厳守してください。

Visual Basicのディストリビューションウィザード（セットアップウィザード）使用後の注意


Knowlbo OCX製品のバージョンについて

Knowlbo(R)/OCX製品のバージョンについて

Knowlbo(R)/OCX製品のバージョンについて

Knowlbo(R)/OCX製品は、プロダクト・バージョンとデベロップ・バージョンを持ちます。

Version <Mojor>.<Minor> R<Revision>

<Mojor>：プロダクトバージョンです。

<Minor>：同一プロダクトにおけるマイナーバージョン（改善版）です。

<Revision>：障害対応を含むリリースバージョン（対応版）です。

プロダクトバージョン

プロダクトバージョンは、その製品を通して普遍的なバージョンであり、各種マテリアル、製品カタログ、および製品広告に表示されます。

例：Version 2

デベロップバージョン

デベロップバージョンは開発バージョンであり、製品のアップデートバージョンとして製品におけるマイナーバージョン（改善版）、およびリリースバージョン（対応版）を識別します。

例：Version 2.0 R3

コンポーネント・バージョン

コンポーネントバージョンは複数のコンポーネントを含む製品において、各コンポーネント別のデベロップバージョンであり、（製品）デベロップバージョンとは独立して管理されます。各コンポーネントのバージョン情報ダイアログに表示されます。（製品が単一コンポーネントである場合は、デベロップバージョンと同一になります。）

マイナーバージョンアップのご案内

当製品のマイナーバージョンは、お客様からのご要望が多く、またご要望の強いもののなかから、比較的小規模なものを選び改善したバージョンです。

改善内容とアップデートはアップデータダウンロードページに掲載いたします。

マイナーバージョンのアップデートは無料です。必要に応じてホームページからダウンロードしてご利用ください。


最新製品情報について

ナルボ製品の最新情報は、弊社ホームページの製品情報をご覧ください。


ソフトウェア使用許諾権について

ソフトウェア使用許諾契約

お客様がディスクのケースを開封するかまたはディスクのシールをはがした場合に、お客様はこの契約に同意してご利用いただけるものといたします。この契約に同意できない場合には、ご利用することはできません。

このソフトウエア使用許諾契約とディスクは、お客様が適法に使用許諾を受けたことの証しとなりますので、どちらも大切に保管してください。

適用

以下の条項は、お客様がこの契約書とともに入手された株式会社ナルボ（以下「弊社」といいます）のソフトウエア製品（コンピュータプログラムとマニュアルその他の関連資料を含み、以下「本製品」といいます）に適用します。

使用の許諾

（１）お客様は「ユーザ登録」に記載された担当者の管理下においてのみ本製品を使用できます。

（２）お客様は本製品をコンピュータネットワーク上で複数の使用者により使用することはできません。ただし、マニュアルその他にネットワーク対応製品である旨が記載されている製品はこの限りではありません。

（３）お客様はいかなる事由によろうとも本製品を譲渡、販売、転貸することはできません。

（４）本製品のパッケージに同一の機能を有し、形態の異なるディスクが複数入っていた場合、お客様はそのうちの一種類のディスクのみをご使用いただけます。お客様が残りのディスクを他のコンピュータで使用したり、他者に譲渡、販売、転貸することはできません。また、お客様のご要望に応じて弊社が本製品と同一の機能を有し、形態の異なるディスクをお客様に提供した場合も同様とします。

（５）本製品のマニュアルその他にロイヤルティフリーの言語関連製品である旨が記載されている場合に限り、お客様が販売する製品に本製品のランタイムモジュールを組み込むことができます。ただし、この場合においても本製品の使用法やその他一切を公開することはできません。また、販売する製品には本製品の有効な著作権表示を明記しなければなりません。

保証の範囲

（１）弊社は本製品の仕様を予告なしに変更することがあります。

（２）本製品の品質および性能に関して発生する問題は、お客様の費用負担をもって処理することとします。

（３）弊社は、いかなる場合にも、お客様が本製品を使用または運用した結果に関して一切責任を負いません。

（４）本製品にお客様が目的を遂げることができないような重大な欠陥（磁気の消滅、破損など）があった場合、欠陥のない製品と交換するかまたはその製品代金相当額をもって弊社の保証限度とします。ただし、この保証は、お客様が本製品をご購入されてから30日以内に限らせていただきます。

テクニカルサポートサービス

弊社は、ユーザー登録によりご登録をいただいたお客様に対してのみ、テクニカルサポートサービスをご提供するものとします。但し、本製品（バージョン）の販売が終了して、１年以上が経過した場合にはその限りではありません。

契約期間

（１）本契約はお客様に製品を納入した日より発効します。また、納入日は証票により確認するものとします。

（２）お客様が本契約の条項のいずれかに違反した場合、本契約は解除されます。またこの場合を含め、製品の代金は返還いたしません。


ソケットオブジェクトタイプ

STREAM接続におけるサーバでは、コネクト要求をアクセプトするソケットオブジェクト（KnSocketObject）をMainソケット、クライアントと接続するソケットオブジェクトをWorkerソケットと呼び区別します。また、クライアントのソケットオブジェクトは、Singleソケットと呼びます。


ソケットサイト

KnSocketコントロールは、自分をLocalソケット（コントロール）と呼び、通信先をRemoteソケット（コントロール）と呼びます。