D 1.0   D 2.0
About Japanese Translation

Last update Thu Sep 16 11:26:01 2010

std.socket

Notes:
Win32 では、ws2_32.lib をリンクしてください

Source:
std/socket.d

Example:
See /dmd/samples/d/listener.d.

Authors:
Christopher E. Miller

class SocketException: object.Exception;
Socket の投げる例外の基底クラス

int errorCode;
プラットフォーム依存のエラーコード

enum AddressFamily;
アドレス解決に使う、通信ドメイン

UNSPEC


UNIX
ローカル通信

INET
IPv4 インターネット・プロトコル

IPX
Novell IPX プロトコル

APPLETALK
Appletalk

enum SocketType;
通信方式

STREAM
順序性と信頼性があり、双方向の、コネクション志向バイト・ストリーム

DGRAM
コネクション志向でない、信頼性無し、固定最大長メッセージ。データが失われたり、到着順序が変わったりすることがあり得ます。

RAW
生のネットワーク・プロトコルへのアクセス

RDM
信頼性はあるが、順序は保証しないデータグラム

SEQPACKET
順序性と信頼性があり、固定最大長メッセージのデータグラム方式

enum ProtocolType;
プロトコル

IP
internet protocol version 4

ICMP
internet control message protocol

IGMP
internet group management protocol

GGP
gateway to gateway protocol

TCP
transmission control protocol

PUP
PARC universal packet protocol

UDP
user datagram protocol

IDP
Xerox NS protocol

IPV6
internet protocol version 6

class Protocol;
Protocol はプロトコル情報の取得のためのクラスです。

ProtocolType type;
string name;
string[] aliases;
これらのメンバは、以下のメソッドの呼び出しが成功したあとに使用可能になります:

bool getProtocolByName(string name);
失敗時にはfalseを返します

bool getProtocolByType(ProtocolType type);
失敗時にはfalseを返します

class Service;
Service はサービス情報の取得のためのクラスです。

string name;
string[] aliases;
ushort port;
string protocolName;
これらのメンバは、以下のメソッドの呼び出しが成功したあとに使用可能になります:

bool getServiceByName(string name, string protocolName);
bool getServiceByName(string name);
bool getServiceByPort(ushort port, string protocolName);
bool getServiceByPort(ushort port);
プロトコル名を省略すると、任意のプロトコルがマッチします。

Returns:
失敗時にはfalseを返します。

class HostException: object.Exception;
InternetHost から投げられる例外の基底です

int errorCode;
プラットフォーム依存のエラーコード

class InternetHost;
InternetHost は IPv4 アドレスを解決するためのクラスです

string name;
string[] aliases;
uint[] addrList;
これらのメンバは、以下のいずれかの関数の呼び出しが成功したらデータが入ります:

bool getHostByName(string name);
ホスト名の解決。解決できなければfalseを返します。

bool getHostByAddr(uint addr);
IPv4 アドレス番号の解決。できなければfalseを返します。

bool getHostByAddr(string addr);
一個上と同様ですが、 IPv4 アドレスはドット区切り十進整数形式 a.b.c.d. で表現します。解決できなければfalseを返します。

class AddressException: object.Exception;
Address の投げる例外の基底クラス

abstract class Address;
Address はネットワークアドレスを表す抽象クラスです。

AddressFamily addressFamily();
このアドレスのプロトコル・ファミリ

string toString();
このアドレスの、人間に読める文字列表現

class UnknownAddress: std.socket.Address;


class InternetAddress: std.socket.Address;
InternetAddress は、IPv4 (Internet Protocol version 4) のアドレスとポート番号を表すクラスです。

const uint ADDR_ANY;
任意の IPv4アドレス番号

const uint ADDR_NONE;
無効IPv4アドレス番号

const ushort PORT_ANY;
任意の IPv4ポート番号

AddressFamily addressFamily();
AddressFamily.INET を返すようにオーバーロードされています。

ushort port();
IPv4 ポート番号を返します

uint addr();
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 とすることが可能で、この場合、 実際に接続が張られるまで値が不明と言うことになります。

string toAddrString();
IPv4アドレスを、人間に読める、ドット区切り十進整数形式の文字列に変換したものです。

string toPortString();
IPv4ポート番号を人間に読める文字列に変換したものです。

string toString();
IPv4アドレスとポート番号を、a.b.c.d:e 形式の文字列に変換したものです。

static uint parse(string addr);
ドット区切り十進整数形式 a.b.c.d のIPv4アドレス文字列を解析し、数値として返します。 もし文字列が正しいIPv4アドレスでなければ、 ADDR_NONE が返されます。

class SocketAcceptException: std.socket.SocketException;


enum SocketShutdown;
ソケットのシャットダウン方式

RECEIVE
このソケットでの受信を無効にする

SEND
このソケットでの送信を無効にする

BOTH
RECEIVE と SEND の両方

enum SocketFlags;
フラグはORで結合もできます:

NONE
フラグ指定無し

OOB
out-of-bandストリームデータ

PEEK
キューから取り除かずに、到着データを覗く

DONTROUTE
データは経路制御の対象とすべきでない。このフラグは無視されることがあります。送信専用

NOSIGNAL
ソケット書き込みエラー時にSIGPIPEシグナルを送らず、EPIPEを返すようにします。

struct timeval;
タイムアウトまでの経過時間を表す値

int seconds;
秒数

int microseconds;
秒数に追加されるマイクロ秒数

class SocketSet;
Socket.select で使うソケット集合を表すクラス

this(uint max);
最大追加可能なソケット数を指定します

this();
システムのデフォルトの最大値を使用します

void reset();
SocketSet をリセットして、保持ソケットを0個の状態にします

void add(Socket s);
ソケットを追加します。最大値を超えて追加しようとすると危険な副作用が起きます

void remove(Socket s);
ソケットを取り除きます

int isSet(Socket s);
ソケットがこの集合に含まれていれば非0を返します

uint max();
FD_SETSIZE のような、追加可能なソケットの最大数です。

enum SocketOptionLevel;
ソケットオプションが定義されるレベル:

SOCKET
ソケットレベル

IP
IPv4 レベル

ICMP


IGMP


GGP


TCP
TCP レベル

PUP


UDP
UDP レベル

IDP


IPV6
IPv6 レベル

struct linger;
SocketOption.LINGER で使う、残存待機時間の情報

uint16_t on;
非0ならば、オンです

uint16_t time;
残存待機(linger)時間

enum SocketOption;
ソケットに関するオプションを指定します

DEBUG
デバッグ情報を記録

BROADCAST
ブロードキャストメッセージの送信を許可

REUSEADDR
アドレスの再利用を許可します

LINGER
クローズ時に未送信データがある場合、待機する

OOBINLINE
out-of-band データを通常データとして受信

SNDBUF
送信バッファサイズ

RCVBUF
受信バッファサイズ

DONTROUTE
経路制御を行わない

TCP_NODELAY
送信一重化のためNagleのアルゴリズムを無効にする

IPV6_UNICAST_HOPS


IPV6_MULTICAST_IF


IPV6_MULTICAST_LOOP


IPV6_JOIN_GROUP


IPV6_LEAVE_GROUP


class Socket;
Socket は Berkeley のソケットインターフェイスを使ったネットワーク通信の端点を作るクラスです。

this(AddressFamily af, SocketType type, ProtocolType protocol);
this(AddressFamily af, SocketType type);
this(AddressFamily af, SocketType type, string protocolName);
ブロッキング方式のソケットを作成します。 アドレスファミリ内で指定のソケットタイプをサポートするプロトコルがただ一つしか 存在しない場合は、ProtocolType は省略できます。

socket_t handle();
内部で使われているソケットのハンドルを取得します。

bool blocking();
void blocking(bool byes);
ソケットの blocking フラグを読む/書くプロパティです

ソケットが blocking モードの時は、receive(), accept(), send() の呼び出しはデータの到着やアクションの完了まで待機(ブロック)します。 非blockingソケットは、ブロックせずに即座に制御を戻します。

AddressFamily addressFamily();
ソケットのアドレスファミリを取得します

bool isAlive();
このソケットが有効で接続中かどうかを示すプロパティ

void bind(Address addr);
ローカルアドレスをこのソケットに束縛します

void connect(Address to);
接続を確立します。ソケットがブロッキングモードの場合、 connect は、実際の接続完了まで待機します。 ノンブロッキングモードの場合、connect はすぐに戻り、裏で接続処理を続けます。

void listen(int backlog);
コネクション要求の到着を待ちに入ります。 listen の前に、必ず bind を呼んでおく必要があります。 backlog は、accept されるまでの間に要求をためておくキューのサイズです。

protected Socket accepting();
新しいSocketオブジェクトが必要になったときに、acceptによって呼び出されます。 派生クラスで利用するには、このメソッドをオーバーライドして他の派生クラスのインスタンスを返すことになります。 返値の Socket にはハンドルを設定してあってはなりません。この目的のために、Socketクラスには protectedコンストラクタ this() が用意されています。

Socket accept();
到着したコネクション要求を受け付けます。ソケットがブロッキングモードの場合、 acceptは接続を待機します。acceptに失敗した場合、 SocketAcceptExceptionを投げます。派生クラスでの使用についてはacceptingを参照してください。

void shutdown(SocketShutdown how);
送信and/or受信機能を無効にします

void close();
ただちに全てのコネクションを落とし、ソケット資源を解放します。 コネクション志向のソケットの場合、closeの前にはshutdown を呼んでおくことが推奨されます。close後には Socketオブジェクトは使用できません。

static string hostName();
ローカルマシンのホスト名を得るためのプロパティ。mangoのアイデアです

Address remoteAddress();
リモート側のアドレス

Address localAddress();
ローカル側のアドレス

const int ERROR;
送受信に関するエラーのコード

Select!(false,long,int) send(const(void)[] buf, SocketFlags flags);
Select!(false,long,int) send(const(void)[] buf);
データを送信します。返値は、送信成功時は実際に送信されたバイト数、 失敗時は ERROR です。ソケットがブロッキングモードで、 バッファに空きがなければsendは待機に入ります。

Select!(false,long,int) sendTo(const(void)[] buf, SocketFlags flags, Address to);
Select!(false,long,int) sendTo(const(void)[] buf, Address to);
Select!(false,long,int) sendTo(const(void)[] buf, SocketFlags flags);
Select!(false,long,int) sendTo(const(void)[] buf);
データを、指定の送り先アドレスへ送信します。送り先アドレスが指定されていない場合は、接続が確立済みでなければならず、その接続先アドレスが使用されます。ソケットがブロッキングモードで、バッファに空きがなければ sendTo は待機に入ります。

ptrdiff_t receive(void[] buf, SocketFlags flags);
ptrdiff_t receive(void[] buf);
データを受信します。受信成功時は実際に受信されたバイト数、 リモート側が接続を切断した場合は0、受信失敗時は ERROR on を返します。ソケットがブロッキングモードの場合、 receive は、受信データの到着を待機します。

Select!(false,long,int) receiveFrom(void[] buf, SocketFlags flags, out Address from);
ptrdiff_t receiveFrom(void[] buf, out Address from);
Select!(false,long,int) receiveFrom(void[] buf, SocketFlags flags);
ptrdiff_t receiveFrom(void[] buf);
データを、指定のリモートアドレスから受信します。 ソケットがブロッキングモードの場合、receiveFrom は、 受信データの到着を待機します。

Returns:
受信成功時は実際に受信されたバイト数、 リモート側が接続を切断した場合は0、受信失敗時は ERROR を返します。

int getOption(SocketOptionLevel level, SocketOption option, void[] result);
ソケットオプションを取得します。resultに書き込まれたバイト数が返ります。

int getOption(SocketOptionLevel level, SocketOption option, out int32_t result);
一個上と同様ですが、よくある、intやboolean型のオプションの場合のための特別版です。

int getOption(SocketOptionLevel level, SocketOption option, out linger result);
lingerオプションを取得します。

void setOption(SocketOptionLevel level, SocketOption option, void[] value);
ソケットオプションを指定します。

void setOption(SocketOptionLevel level, SocketOption option, int32_t value);
よくある、intやboolean型のオプションの場合のための特別版です。

void setOption(SocketOptionLevel level, SocketOption option, linger value);
lingerオプションを設定します。

static int select(SocketSet checkRead, SocketSet checkWrite, SocketSet checkError, timeval* tv);
static int select(SocketSet checkRead, SocketSet checkWrite, SocketSet checkError, int microseconds);
static int select(SocketSet checkRead, SocketSet checkWrite, SocketSet checkError);
ソケットの状態が変化するのを待ちます。タイムアウト時間は、timeval 構造体か、もしくはマイクロ秒単位で指定できます。指定がなかったり、timeval が null であった場合、最大タイムアウト時間が使用されます。timeval 型のタイムアウト値は、select から戻った後の値は未規定です。この関数の返値は、通常は状態の変化したソケットの数、タイムアウト時は0、割り込み発生時は-1です。返値が0より大きいときには、SocketSet が、状態変化したソケットのみを含むように更新されています。connect中のソケットに関しては、write状態の変化が、接続が確立されて send 可能になったことを示します。listen中のソケットに関しては、read状態の変化が、接続要求が到着して accept 可能になったことを示します。

class TcpSocket: std.socket.Socket;
TcpSocket はTCP用のソケットを表すお手軽クラスです。

this(AddressFamily family);
ブロッキングTCPソケットを構築します

this();
ブロッキングTCPソケットを構築します

this(Address connectTo);
ブロッキングTCPソケットを構築し指定された InternetAddress に接続します

class UdpSocket: std.socket.Socket;
UdpSocket はUDP用のソケットを表すお手軽クラスです。

this(AddressFamily family);
ブロッキングUDPソケットを構築します

this();
ブロッキングUDPソケットを構築します