(クラス)
発信接続と着信接続両方の、クライアント TCP ソケット用のクラスです。
プログラミング注意事項
コンストラクタ public | {DataTCPSocket.default local-address:#SocketInetAddress = null,local-port:uint16 = NetworkSocket.random-port,local-name:#String = null,local-port-name:#String = null,remote-address:#SocketInetAddress = null,remote-port:uint16 = NetworkSocket.random-port,remote-name:#String = null,remote-port-name:#String = null,timeout:Time = Socket.infinite-timeout,try-other-addresses?:bool = true,timeout-finishes-connect?:bool = true,reuse-address?:bool = false,finish-connectable-handler:#EventHandler = null,finish-connectable-timeout-handler:#EventHandler = null,finish-connectable-timeout:Time = IOEventTarget.infinite-timeout } |
アクセサ public DataTCPSocket.event-enabled?:
bool
フィールド protected DataTCPSocket.finish-connectable-handler:#
EventHandler
フィールド protected DataTCPSocket.finish-connectable-timeout:
Time
フィールド protected DataTCPSocket.finish-connectable-timeout-handler:#
EventHandler
keep-alive?: | keep-alive を制御します。つまり、接続がアイドル状態でも失われたときには OS で認識されるということですが、多くのシステムではこのタイムアウト値を長く (たとえば 2 時間) 設定しています。 |
アクセサ public DataTCPSocket.keep-alive?:
bool セッター public DataTCPSocket.keep-alive?:
bool
linger: | ソケットがシャットダウンされて閉じられるときのデータ フラッシュに関与する SO_LINGER オプションを制御します。SO_LINGER オプションの制御について十分理解されていない場合は、これを使用しないでください。 |
アクセサ public DataTCPSocket.linger:
int セッター public DataTCPSocket.linger:
int
アクセサ public DataTCPSocket.receive-buffer-size:
int セッター public DataTCPSocket.receive-buffer-size:
int
アクセサ public DataTCPSocket.remote-port:
uint16
アクセサ public DataTCPSocket.send-buffer-size:
int セッター public DataTCPSocket.send-buffer-size:
int
tcp-no-delay?: | TCP の遅延なしオプションを制御します。これにより、小さいパケットの送信を回避しようとする Nagel アルゴリズムを有効または無効にしますが、マウスの移動などのリアル タイム イベントで問題になる遅延を引き起こす可能性があります。このアルゴリズムを無効にすると比較的小さいパケットも送信されるようになりますが、使用するマシンおよびネットワーク リソースも増えます。 |
アクセサ public DataTCPSocket.tcp-no-delay?:
bool セッター public DataTCPSocket.tcp-no-delay?:
bool
フィールド protected DataTCPSocket.timeout-finishes-connect?:
bool
フィールド protected DataTCPSocket.try-other-addresses?:
bool
protected | {DataTCPSocket.add-targeted-event-handler}:EventHandler |
public | {DataTCPSocket.async-connect local-address:#SocketInetAddress = self._local-address,local-port:uint16 = self._local-port,local-name:#String = null,local-port-name:#String = null,remote-address:#SocketInetAddress = self._remote-address,remote-port:uint16 = self._remote-port,remote-name:#String = null,remote-port-name:#String = null,reuse-address?:bool = self.reuse-address?,timeout:Time = self.timeout,try-other-addresses?:bool = self.try-other-addresses?,timeout-finishes-connect?:bool = self.timeout-finishes-connect?,event-handler:EventHandler,...:EventHandler }:AsyncWorker |
protected | {DataTCPSocket.call-handler}:void |
public inline | {DataTCPSocket.close}:void |
public | {DataTCPSocket.connect local-address:#SocketInetAddress = self._local-address,local-port:uint16 = self._local-port,local-name:#String = null,local-port-name:#String = null,remote-address:#SocketInetAddress = self._remote-address,remote-port:uint16 = self._remote-port,remote-name:#String = null,remote-port-name:#String = null,timeout:Time = self.timeout,try-other-addresses?:bool = self.try-other-addresses?,timeout-finishes-connect?:bool = self.timeout-finishes-connect?,reuse-address?:bool = self.reuse-address? }:void |
public | {DataTCPSocket.finish-connect timeout:Time = self.timeout,try-other-addresses?:bool = self.try-other-addresses?,timeout-finishes-connect?:bool = self.timeout-finishes-connect? }:void |
protected | {DataTCPSocket.get-no-lookup-remote-hostname}:String |
protected | {DataTCPSocket.private-add-event-handler}:EventHandler |
protected | {DataTCPSocket.read-byte timeout:Time = self.timeout,exception-on-timeout?:bool = true }:(int, byte) |
read-bytes: | {FastArray-of byte}、つまり ByteVec を読み込みます。 |
protected | {DataTCPSocket.read-bytes}:int |
shutdown: | ソケットを閉じます。入力または出力のいずれかのシャットダウンも可能です。 |
public | {DataTCPSocket.shutdown}:void |
public | {DataTCPSocket.start-connect local-address:#SocketInetAddress = self._local-address,local-port:uint16 = self._local-port,local-name:#String = null,local-port-name:#String = null,remote-address:#SocketInetAddress = self._remote-address,remote-port:uint16 = self._remote-port,remote-name:#String = null,remote-port-name:#String = null,reuse-address?:bool = self.reuse-address?,finish-connectable-handler:#EventHandler = self.finish-connectable-handler,finish-connectable-timeout-handler:#EventHandler = self.finish-connectable-timeout-handler,finish-connectable-timeout:Time = self.finish-connectable-timeout }:void |
protected | {DataTCPSocket.write-byte b:byte,timeout:Time = self.timeout,exception-on-timeout?:bool = true }:int |
write-bytes: | {FastArray-of byte}、つまり ByteVec の送信または書き込みを行います。 |
protected | {DataTCPSocket.write-bytes}:int |
メソッド 継承 DefaultIOEventTarget:
add-event-handler, add-timeout-event-handler, begin-event-enabled, begin-using-handlers, end-event-enabled, end-using-handlers, enqueue-timeout, event-handler-present?, handle-event, handle-event-with-now, make-IOEvent, new-handlers, remove-event-handler, remove-event-handler-by-type, remove-targeted-event-handler, remove-targeted-event-handler-by-type, reset-event-handler-expiration, verify-event
(コンストラクタ)
public | {DataTCPSocket.default local-address:#SocketInetAddress = null,local-port:uint16 = NetworkSocket.random-port,local-name:#String = null,local-port-name:#String = null,remote-address:#SocketInetAddress = null,remote-port:uint16 = NetworkSocket.random-port,remote-name:#String = null,remote-port-name:#String = null,timeout:Time = Socket.infinite-timeout,try-other-addresses?:bool = true,timeout-finishes-connect?:bool = true,reuse-address?:bool = false,finish-connectable-handler:#EventHandler = null,finish-connectable-timeout-handler:#EventHandler = null,finish-connectable-timeout:Time = IOEventTarget.infinite-timeout } |
ソケットを初期化します。実際には接続しませんが、DataTCPSocket.connect、または DataTCPSocket.start-connect および DataTCPSocket.finish-connect 呼び出しのパラメータを設定できます。
local-address: バインド先のローカル アドレス。ソケットは接続が確立されるときにそれ自体を適切にバインドするので、通常 local-address は必要ありません。local-address または local-name を指定すると、ソケットはそのパラメータのアドレス ファミリーで通信するように制限されます。
local-port: バインド先のローカル ポートを示す uint16 のキーワード。接続が確立されるときにそれ自体で空いているポートにバインドするので、通常は必要ありません。
local-name: バインド先のローカル アドレスを探すときに使用するホスト名を示す String のキーワード。接続が確立されるときにそれ自体を適切にバインドするので、通常は必要ありません。
local-port-name: バインド先のローカル ポートを探すときに使用するポート名を示す String のキーワード。接続が確立されるときにそれ自体を空いているポートにバインドするので、通常は必要ありません。
timeout: このクラスのこのインスタンスが作成するすべてのブロッキング呼び出しに適用される既定のタイムアウトを示す Time のキーワード。既定は無限、つまりブロッキングです。
try-other-addresses?: bool のキーワード。(remote-name または remote-address で指定された) リモート ホストの他のアドレス (存在する場合) で試行する必要があるかどうかを示します。既定値は true です。
timeout-finishes-connect?: bool のキーワード。接続中に指定したタイムアウト値によるタイムアウトが起こったときに接続試行をキャンセルするかどうかを指定します。true を既定値とします。
reuse-address?: TIME_WAIT 状態にあるローカル アドレスとポート名の組み合わせの再使用を許可するかどうかを示す bool のキーワード (一部のシステムでは、他のあまり推奨できない場合での再使用も許可されている可能性があります)。既定値は false です。local-name、local-address、local-port、または local-port-name が指定されている場合にのみ適用されます。
finish-connectable-timeout: 接続が完了していないか失敗した場合に呼び出される
finish-connectable-timeout-handler のタイムアウトの
Time のキーワード。既定値は
IOEventTarget.infinite-timeout です。
(フィールド)
この項目はサポートされていません。内部使用限定となっています。
(アクセサ)
アクセサ public DataTCPSocket.event-enabled?:
bool self のイベントがモニタされる準備ができている場合は true を返します。
注意事項
(フィールド)
protected DataTCPSocket.finish-connectable-handler:#
EventHandler
この項目はサポートされていません。内部使用限定となっています。
(フィールド)
protected DataTCPSocket.finish-connectable-timeout:
Time
この項目はサポートされていません。内部使用限定となっています。
(フィールド)
protected DataTCPSocket.finish-connectable-timeout-handler:#
EventHandler
この項目はサポートされていません。内部使用限定となっています。
(アクセサ)
アクセサ public DataTCPSocket.keep-alive?:
bool セッター public DataTCPSocket.keep-alive?:
bool keep-alive を制御します。つまり、接続がアイドル状態でも失われたときには OS で認識されるということですが、多くのシステムではこのタイムアウト値を長く (たとえば 2 時間) 設定しています。
注意事項
既定値は off です。
(アクセサ)
アクセサ public DataTCPSocket.linger:
int セッター public DataTCPSocket.linger:
int ソケットがシャットダウンされて閉じられるときのデータ フラッシュに関与する SO_LINGER オプションを制御します。SO_LINGER オプションの制御について十分理解されていない場合は、これを使用しないでください。
sl: -1 はオフ (close が即座に返され、OS はデータ送信を実行します)、0 は遅延時間 0 で待機する (close はデータをクリアする) ことを意味します。0 より大きい値はその遅延時間を示し、指定された秒数 (多数の実装では長い時間) close はデータ送信の試行を待機することを意味します。
注意事項
既定値は off です。
(アクセサ)
アクセサ public DataTCPSocket.receive-buffer-size:
int セッター public DataTCPSocket.receive-buffer-size:
int データを受け取る OS バッファのサイズ。
注意事項
データの受信速度と、接続での read 呼び出しがブロックする回数に影響します。送信できるデータのサイズまたは量には影響しません。OS が指定されたサイズを受け取らない場合もあります。
(アクセサ)
ソケットのリモート アドレス (接続先アドレス)。
(アクセサ)
アクセサ public DataTCPSocket.remote-port:
uint16
(アクセサ)
アクセサ public DataTCPSocket.send-buffer-size:
int セッター public DataTCPSocket.send-buffer-size:
int データを送信する OS バッファのサイズ。
注意事項
データの送信速度と、接続での送信がブロックする回数に影響します。送信できるデータのサイズまたは量には影響しません。OS が指定されたサイズを受け取らない場合もあります。
(フィールド)
この項目はサポートされていません。内部使用限定となっています。
(アクセサ)
アクセサ public DataTCPSocket.tcp-no-delay?:
bool セッター public DataTCPSocket.tcp-no-delay?:
bool TCP の遅延なしオプションを制御します。これにより、小さいパケットの送信を回避しようとする Nagel アルゴリズムを有効または無効にしますが、マウスの移動などのリアル タイム イベントで問題になる遅延を引き起こす可能性があります。このアルゴリズムを無効にすると比較的小さいパケットも送信されるようになりますが、使用するマシンおよびネットワーク リソースも増えます。
注意事項
既定値は off です。
(フィールド)
protected DataTCPSocket.timeout-finishes-connect?:
bool
この項目はサポートされていません。内部使用限定となっています。
(フィールド)
protected DataTCPSocket.try-other-addresses?:
bool
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
protected | {DataTCPSocket.add-targeted-event-handler}:EventHandler |
指定した event-target のイベント ハンドラを追加します。
timeout: イベント ハンドラのタイムアウトです (必要な場合)。
注意事項
event-target がプロキシ スタイルの
IOEventTarget で使用されている場合、event-target は
self 以外の何かになります。
(メソッド)
public | {DataTCPSocket.async-connect local-address:#SocketInetAddress = self._local-address,local-port:uint16 = self._local-port,local-name:#String = null,local-port-name:#String = null,remote-address:#SocketInetAddress = self._remote-address,remote-port:uint16 = self._remote-port,remote-name:#String = null,remote-port-name:#String = null,reuse-address?:bool = self.reuse-address?,timeout:Time = self.timeout,try-other-addresses?:bool = self.try-other-addresses?,timeout-finishes-connect?:bool = self.timeout-finishes-connect?,event-handler:EventHandler,...:EventHandler }:AsyncWorker |
ソケットをリモート ポートやアドレスに非同期で接続し、接続が完了したり、失敗したり、タイムアウトした場合 AsyncConnectSocketEvent を送ります。
プログラミング注意事項
finish-connectable-handler や
finish-connectable-timeout-handler は、設定された
DataTCPSocket で使用されるので、同時にこれを使用すべきではありません。
注意事項
導入:
バージョン 6.0
(メソッド)
protected | {DataTCPSocket.call-handler}:void |
これは、関連するハンドラを実際に呼び出すために呼び出されます。
プログラミング注意事項
オーバーライド
サブクラスが呼び出しを抑止する必要がある場合にはオーバーライドできますが、オーバーライド側はその呼び出しが抑止されない場合にさらに super.call-handler を呼び出す必要があります。
(メソッド)
public inline | {DataTCPSocket.close}:void |
(メソッド)
public | {DataTCPSocket.connect local-address:#SocketInetAddress = self._local-address,local-port:uint16 = self._local-port,local-name:#String = null,local-port-name:#String = null,remote-address:#SocketInetAddress = self._remote-address,remote-port:uint16 = self._remote-port,remote-name:#String = null,remote-port-name:#String = null,timeout:Time = self.timeout,try-other-addresses?:bool = self.try-other-addresses?,timeout-finishes-connect?:bool = self.timeout-finishes-connect?,reuse-address?:bool = self.reuse-address? }:void |
リモート アドレスおよびポートに接続します。パラメータは DataTCPSocket.default 呼び出しまたはこの呼び出しで設定できますが、ローカルおよびリモートのアドレスおよびポートと、reuse-address? だけがオブジェクトに保存されます。
プログラミング注意事項
local-address: バインド先のローカル アドレス。ソケットは接続が確立されるときにそれ自体を適切にバインドするので、通常 local-address は必要ありません。local-address または local-name を指定すると、ソケットはそのパラメータのアドレス ファミリーで通信するように制限されます。
local-port: バインド先のローカル ポートを示す uint16 のキーワード。接続が確立されるときにそれ自体で空いているポートにバインドするので、通常は必要ありません。
local-name: ローカル アドレスを探すときに使用するホスト名を示す String のキーワード。接続が確立されるときにそれ自体を適切にバインドするので、通常は必要ありません。
local-port-name: バインド先のローカル ポートを探すときに使用するポート名を示す String のキーワード。接続が確立されるときにそれ自体を空いているポートにバインドするので、通常は必要ありません。
timeout: この呼び出しのタイムアウトの Time のキーワード。この呼び出しについてのみ既定をオーバーライドします。これは試行されるアドレスごとのタイムアウトであり、timeout-finishes-connect? パラメータとのインタラクションがあります。
try-other-addresses?: bool のキーワード。(remote-name または remote-address で指定された) リモート ホストの他のアドレス (存在する場合) で試行する必要があるかどうかを示します。既定値は true です。
timeout-finishes-connect?: bool のキーワード。接続中に指定したタイムアウト値によるタイムアウトが起こったときに接続試行をキャンセルするかどうかを指定します。既定値は true です。false の場合は、接続に成功するか、OS が失敗を通知するまで各アドレスへの接続試行を続けるので、timeout は意味がなくなります。
reuse-address?: TIME_WAIT 状態にあるローカル アドレスとポート名の組み合わせの再使用を許可するかどうかを示す bool のキーワード (一部のシステムでは、他のあまり推奨できない場合での再使用も許可されている可能性があります)。既定値は false です。local-name、local-address、local-port、または local-port-name が指定されている場合にのみ適用されます。
注意事項
注意事項
(メソッド)
public | {DataTCPSocket.finish-connect timeout:Time = self.timeout,try-other-addresses?:bool = self.try-other-addresses?,timeout-finishes-connect?:bool = self.timeout-finishes-connect? }:void |
接続を完了するか、別のアドレスでの接続を実行します。パラメータは、DataTCPSocket.default 呼び出しかこの呼び出しで設定できますが、このメソッドに渡されたパラメータはオブジェクトに保存されません。
プログラミング注意事項
DataTCPSocket.start-connect 呼び出しの後で、このソケット上の入出力を実行する前に呼び出します。タイムアウトによる接続の未完了の場合、または
try-other-addresses? が
true のときに存在する複数のアドレスの 1 つで接続に失敗したために接続が完了しなかった場合、
WouldBlockSocketException をスローします。
WouldBlockSocketException をスローした場合は、このメソッドを再度呼び出して接続試行を続けることができます (再呼び出しで実行される正確な操作は
try-other-addresses? および
timeout-finishes-connect? パラメータでコントロールされます)。
timeout: この呼び出しのタイムアウトの Time のキーワード。この呼び出しについてのみ既定値をオーバーライドします。
try-other-addresses?: bool のキーワード。(remote-name または remote-address で指定された) リモート ホストの他のアドレス (存在する場合) で試行する必要があるかどうかを示します。既定値は true です。
timeout-finishes-connect?: bool のキーワード。接続をキャンセルしようとしている間に、設定されたタイムアウト値でタイムアウトすべきかどうかを示します。既定値は true です。これが問題になるのは、主に try-other-addresses? が true の場合です。これが true の場合、毎回このメソッドが呼び出され新しいアドレスを試みようとします。これが false の場合、タイムアウト以外で失敗するまで同じアドレスで試み続けます。失敗して初めて、新しいアドレスを試みます。
注意事項
注意事項
(メソッド)
protected | {DataTCPSocket.get-no-lookup-remote-hostname}:String |
(メソッド)
protected | {DataTCPSocket.private-add-event-handler}:EventHandler |
この項目はサポートされていません。内部使用限定となっています。
(メソッド)
protected | {DataTCPSocket.read-byte timeout:Time = self.timeout,exception-on-timeout?:bool = true }:(int, byte) |
byte を読み込みます。
プログラミング注意事項
timeout: クラスにすでに格納されている値が適切でない場合に使用されるタイムアウトの Time キーワード。
exception-on-timeout?: タイムアウトで例外をスローするかどうかを示す bool キーワード。既定値は true です。
戻り値
b、読み込む byte数、読み込まれたバイトの int 数。
(メソッド)
protected | {DataTCPSocket.read-bytes}:int |
{FastArray-of byte}、つまり ByteVec を読み込みます。
プログラミング注意事項
buf: 読み込まれる {FastArray-of byte}。
start: 開始ベクトルの int キーワード。既定値は 0 です。
size: 長さを示す int キーワード。既定値は buf.size - start です。
timeout: クラスにすでに格納されている値が適切でない場合に使用されるタイムアウトの Time キーワード。
exception-on-timeout?: タイムアウトで例外をスローするかどうかを示す bool キーワード。既定値は true です。
戻り値
読み込まれたバイト数を示す int。EOF では -1 になります。
(メソッド)
public | {DataTCPSocket.shutdown}:void |
ソケットを閉じます。入力または出力のいずれかのシャットダウンも可能です。
shutdown-only: 全体的なシャットダウンか、入力または出力のみのシャットダウンかを示します (DataSocketShutdownOption.input-output、DataSocketShutdownOption.input、DataSocketShutdownOption.output をそれぞれ使用します)。
exception-if-not-connected?: 別の側のソケットが閉じられた場合に例外をスローするかどうかを示す
bool キーワード。既定は
true です。(これは、
BadStateSocketException のキャッチ、
SocketErrorCode.not-connected エラー コードのチェック、およびその無視と同じことですがより高速です。)
プログラミング注意事項
(メソッド)
public | {DataTCPSocket.start-connect local-address:#SocketInetAddress = self._local-address,local-port:uint16 = self._local-port,local-name:#String = null,local-port-name:#String = null,remote-address:#SocketInetAddress = self._remote-address,remote-port:uint16 = self._remote-port,remote-name:#String = null,remote-port-name:#String = null,reuse-address?:bool = self.reuse-address?,finish-connectable-handler:#EventHandler = self.finish-connectable-handler,finish-connectable-timeout-handler:#EventHandler = self.finish-connectable-timeout-handler,finish-connectable-timeout:Time = self.finish-connectable-timeout }:void |
リモート アドレスおよびポートへの接続を開始します。パラメータは、DataTCPSocket.default 呼び出しかこの呼び出しで設定できますが、ローカルおよびリモートのアドレスおよびポートと reuse-address? だけがオブジェクトに保存されます。
プログラミング注意事項
local-address: バインド先のローカル アドレスを示す
SocketInetAddress のキーワード。接続が確立されるときにそれ自体を適切にバインドするので、通常は必要ありません。
local-address または
local-name を指定すると、ソケットはその値が使用するアドレス ファミリーで通信するように制限されることに注意してください。
local-port: バインド先のローカル ポートを示す uint16 のキーワード。接続が確立されるときにそれ自体で空いているポートにバインドするので、通常は必要ありません。
local-name: ローカル アドレスを探すときに使用するホスト名を示す String のキーワード。接続が確立されるときにそれ自体を適切にバインドするので、通常は必要ありません。
local-port-name: バインド先のローカル ポートを探すときに使用するポート名を示す String のキーワード。接続が確立されるときにそれ自体を空いているポートにバインドするので、通常は必要ありません。
reuse-address?: TIME_WAIT 状態にあるローカル アドレスとポート名の組み合わせの再使用を許可するかどうかを示す bool のキーワード (一部のシステムでは、他のあまり推奨できない場合での再使用も許可されている可能性があります)。既定値は false です。local-name、local-address、local-port、または local-port-name が指定されている場合にのみ適用されます。
finish-connectable-timeout: 接続が完了していないか失敗した場合に呼び出される
finish-connectable-timeout-handler のタイムアウトの
Time のキーワード。既定値は
IOEventTarget.infinite-timeout です。
注意事項
(メソッド)
(メソッド)
(メソッド)
protected | {DataTCPSocket.write-byte b:byte,timeout:Time = self.timeout,exception-on-timeout?:bool = true }:int |
byte の送信または書き込みを行います。
プログラミング注意事項
b: 送信される byte。
timeout: クラスにすでに格納されている値が適切でない場合に使用されるタイムアウトの Time キーワード。
exception-on-timeout?: タイムアウトで例外をスローするかどうかを示す bool キーワード。既定値は true です。
戻り値
書き込まれたバイト数を示す int。
(メソッド)
protected | {DataTCPSocket.write-bytes}:int |
{FastArray-of byte}、つまり ByteVec の送信または書き込みを行います。
プログラミング注意事項
buf: 送信される {FastArray-of byte}。
start: 開始ベクトルの int キーワード。既定値は 0 です。
size: 長さを示す int キーワード。既定値は buf.size - start です。
timeout: クラスにすでに格納されている値が適切でない場合に使用されるタイムアウトの Time キーワード。
exception-on-timeout?: タイムアウトで例外をスローするかどうかを示す bool キーワード。既定値は true です。
戻り値
書き込まれたバイト数を示す int。