std.socket
Notes:Win32 では、ws2_32.lib をリンクしてください Source:
std/socket.d
Example:
See /dmd/samples/d/listener.d.
Authors:
Christopher E. Miller
- Socket の投げる例外の基底クラス
- プラットフォーム依存のエラーコード
- アドレス解決に使う、通信ドメイン
- 通信方式
- 順序性と信頼性があり、双方向の、コネクション志向バイト・ストリーム
- コネクション志向でない、信頼性無し、固定最大長メッセージ。データが失われたり、到着順序が変わったりすることがあり得ます。
- 生のネットワーク・プロトコルへのアクセス
- 信頼性はあるが、順序は保証しないデータグラム
- 順序性と信頼性があり、固定最大長メッセージのデータグラム方式
- プロトコル
- internet protocol version 4
- internet control message protocol
- internet group management protocol
- gateway to gateway protocol
- transmission control protocol
- PARC universal packet protocol
- user datagram protocol
- Xerox NS protocol
- internet protocol version 6
- Protocol はプロトコル情報の取得のためのクラスです。
- これらのメンバは、以下のメソッドの呼び出しが成功したあとに使用可能になります:
- 失敗時にはfalseを返します
- 失敗時にはfalseを返します
- Service はサービス情報の取得のためのクラスです。
- これらのメンバは、以下のメソッドの呼び出しが成功したあとに使用可能になります:
- プロトコル名を省略すると、任意のプロトコルがマッチします。
Returns:
失敗時にはfalseを返します。
- InternetHost から投げられる例外の基底です
- プラットフォーム依存のエラーコード
- InternetHost は IPv4 アドレスを解決するためのクラスです
- これらのメンバは、以下のいずれかの関数の呼び出しが成功したらデータが入ります:
- ホスト名の解決。解決できなければfalseを返します。
- IPv4 アドレス番号の解決。できなければfalseを返します。
- 一個上と同様ですが、
IPv4 アドレスはドット区切り十進整数形式 a.b.c.d.
で表現します。解決できなければfalseを返します。
- Address の投げる例外の基底クラス
- Address はネットワークアドレスを表す抽象クラスです。
- このアドレスのプロトコル・ファミリ
- このアドレスの、人間に読める文字列表現
- InternetAddress は、IPv4 (Internet Protocol
version 4) のアドレスとポート番号を表すクラスです。
- 任意の IPv4アドレス番号
- 無効IPv4アドレス番号
- 任意の IPv4ポート番号
- AddressFamily.INET を返すようにオーバーロードされています。
- IPv4 ポート番号を返します
- IPv4 アドレス番号を返します
- this(string addr, ushort port);
- Params:
string addr ドット区切り十進整数形式 a.b.c.d の文字列か、 ホスト名(InternetHostオブジェクトを 使って解決されます) ushort port 下にあるように、PORT_ANY とすることも可能です
- this(uint addr, ushort port);
this(ushort port); - 新しいAddressオブジェクトを構築します。 addr は ADDR_ANY (デフォルト) に、port
も PORT_ANY とすることが可能で、この場合、
実際に接続が張られるまで値が不明と言うことになります。
- IPv4アドレスを、人間に読める、ドット区切り十進整数形式の文字列に変換したものです。
- IPv4ポート番号を人間に読める文字列に変換したものです。
- IPv4アドレスとポート番号を、a.b.c.d:e 形式の文字列に変換したものです。
- ドット区切り十進整数形式 a.b.c.d
のIPv4アドレス文字列を解析し、数値として返します。
もし文字列が正しいIPv4アドレスでなければ、
ADDR_NONE が返されます。
- ソケットのシャットダウン方式
- このソケットでの受信を無効にする
- このソケットでの送信を無効にする
- RECEIVE と SEND の両方
- フラグはORで結合もできます:
- フラグ指定無し
- out-of-bandストリームデータ
- キューから取り除かずに、到着データを覗く
- データは経路制御の対象とすべきでない。このフラグは無視されることがあります。送信専用
- ソケット書き込みエラー時にSIGPIPEシグナルを送らず、EPIPEを返すようにします。
- タイムアウトまでの経過時間を表す値
- 秒数
- 秒数に追加されるマイクロ秒数
- Socket.select で使うソケット集合を表すクラス
- this(uint max);
- 最大追加可能なソケット数を指定します
- this();
- システムのデフォルトの最大値を使用します
- SocketSet をリセットして、保持ソケットを0個の状態にします
- ソケットを追加します。最大値を超えて追加しようとすると危険な副作用が起きます
- ソケットを取り除きます
- ソケットがこの集合に含まれていれば非0を返します
- FD_SETSIZE のような、追加可能なソケットの最大数です。
- ソケットオプションが定義されるレベル:
- SocketOption.LINGER で使う、残存待機時間の情報
- 非0ならば、オンです
- 残存待機(linger)時間
- ソケットに関するオプションを指定します
- デバッグ情報を記録
- ブロードキャストメッセージの送信を許可
- アドレスの再利用を許可します
- クローズ時に未送信データがある場合、待機する
- out-of-band データを通常データとして受信
- 送信バッファサイズ
- 受信バッファサイズ
- 経路制御を行わない
- 送信一重化のためNagleのアルゴリズムを無効にする
- Socket は
Berkeley のソケットインターフェイスを使ったネットワーク通信の端点を作るクラスです。
- this(AddressFamily af, SocketType type, ProtocolType protocol);
this(AddressFamily af, SocketType type);
this(AddressFamily af, SocketType type, string protocolName); - ブロッキング方式のソケットを作成します。
アドレスファミリ内で指定のソケットタイプをサポートするプロトコルがただ一つしか
存在しない場合は、ProtocolType は省略できます。
- 内部で使われているソケットのハンドルを取得します。
- ソケットの blocking フラグを読む/書くプロパティです
ソケットが blocking モードの時は、receive(), accept(), send() の呼び出しはデータの到着やアクションの完了まで待機(ブロック)します。 非blockingソケットは、ブロックせずに即座に制御を戻します。
- ソケットのアドレスファミリを取得します
- このソケットが有効で接続中かどうかを示すプロパティ
- ローカルアドレスをこのソケットに束縛します
- 接続を確立します。ソケットがブロッキングモードの場合、
connect は、実際の接続完了まで待機します。
ノンブロッキングモードの場合、connect はすぐに戻り、裏で接続処理を続けます。
- コネクション要求の到着を待ちに入ります。
listen の前に、必ず bind を呼んでおく必要があります。
backlog は、accept されるまでの間に要求をためておくキューのサイズです。
- 新しいSocketオブジェクトが必要になったときに、acceptによって呼び出されます。
派生クラスで利用するには、このメソッドをオーバーライドして他の派生クラスのインスタンスを返すことになります。
返値の Socket にはハンドルを設定してあってはなりません。この目的のために、Socketクラスには
protectedコンストラクタ this() が用意されています。
- 到着したコネクション要求を受け付けます。ソケットがブロッキングモードの場合、
acceptは接続を待機します。acceptに失敗した場合、
SocketAcceptExceptionを投げます。派生クラスでの使用についてはacceptingを参照してください。
- 送信and/or受信機能を無効にします
- ただちに全てのコネクションを落とし、ソケット資源を解放します。
コネクション志向のソケットの場合、closeの前にはshutdown
を呼んでおくことが推奨されます。close後には Socketオブジェクトは使用できません。
- ローカルマシンのホスト名を得るためのプロパティ。mangoのアイデアです
- リモート側のアドレス
- ローカル側のアドレス
- 送受信に関するエラーのコード
- データを送信します。返値は、送信成功時は実際に送信されたバイト数、
失敗時は ERROR です。ソケットがブロッキングモードで、
バッファに空きがなければsendは待機に入ります。
- データを、指定の送り先アドレスへ送信します。送り先アドレスが指定されていない場合は、接続が確立済みでなければならず、その接続先アドレスが使用されます。ソケットがブロッキングモードで、バッファに空きがなければ sendTo は待機に入ります。
- データを受信します。受信成功時は実際に受信されたバイト数、
リモート側が接続を切断した場合は0、受信失敗時は ERROR on
を返します。ソケットがブロッキングモードの場合、
receive は、受信データの到着を待機します。
- データを、指定のリモートアドレスから受信します。
ソケットがブロッキングモードの場合、receiveFrom は、
受信データの到着を待機します。
Returns:
受信成功時は実際に受信されたバイト数、 リモート側が接続を切断した場合は0、受信失敗時は ERROR を返します。
- ソケットオプションを取得します。resultに書き込まれたバイト数が返ります。
- 一個上と同様ですが、よくある、intやboolean型のオプションの場合のための特別版です。
- lingerオプションを取得します。
- ソケットオプションを指定します。
- よくある、intやboolean型のオプションの場合のための特別版です。
- lingerオプションを設定します。
- ソケットの状態が変化するのを待ちます。タイムアウト時間は、timeval 構造体か、もしくはマイクロ秒単位で指定できます。指定がなかったり、timeval が null であった場合、最大タイムアウト時間が使用されます。timeval 型のタイムアウト値は、select から戻った後の値は未規定です。この関数の返値は、通常は状態の変化したソケットの数、タイムアウト時は0、割り込み発生時は-1です。返値が0より大きいときには、SocketSet が、状態変化したソケットのみを含むように更新されています。connect中のソケットに関しては、write状態の変化が、接続が確立されて send 可能になったことを示します。listen中のソケットに関しては、read状態の変化が、接続要求が到着して accept 可能になったことを示します。
- TcpSocket はTCP用のソケットを表すお手軽クラスです。
- this(AddressFamily family);
- ブロッキングTCPソケットを構築します
- this();
- ブロッキングTCPソケットを構築します
- this(Address connectTo);
- ブロッキングTCPソケットを構築し指定された InternetAddress に接続します
- UdpSocket はUDP用のソケットを表すお手軽クラスです。
- this(AddressFamily family);
- ブロッキングUDPソケットを構築します
- this();
- ブロッキングUDPソケットを構築します