英語版
このページの英語版を見る
std.socket
ソケットプリミティブ。
License:
Authors:
Christopher E. Miller, David Nadlinger,
Vladimir Panteleev
ソース std/socket.d
- class
SocketException: object.Exception; - std.socket がスローする基本例外。
- @property @safe string
lastSocketError(); - 最近発生したネットワークエラーのエラーメッセージを返す。
- class
SocketOSException: std.socket.SocketException; - オペレーティング・システムによって報告されたネットワーク・エラーを表すソケット例外。
- int
errorCode; - プラットフォーム固有のエラー・コード。
- @safe this(string
msg, stringfile= __FILE__, size_tline= __LINE__, Throwablenext= null, interr= _lasterr(), string function(int) @trustederrorFormatter= &formatSocketError); - @safe this(string
msg, Throwablenext, stringfile= __FILE__, size_tline= __LINE__, interr= _lasterr(), string function(int) @trustederrorFormatter= &formatSocketError); - @safe this(string
msg, interr, string function(int) @trustederrorFormatter= &formatSocketError, stringfile= __FILE__, size_tline= __LINE__, Throwablenext= null);
- class
SocketParameterException: std.socket.SocketException; - ユーザー・コードによって指定された無効なパラメータを表すソケット例外。
- class
SocketFeatureException: std.socket.SocketException; - 現在のシステムで利用できないネットワーク機能を使用しようとしたソケット例外。 現在のシステムで利用できないネットワーク機能を使おうとしたことを表すソケット例外。
- nothrow @nogc @safe bool
wouldHaveBlocked(); - Returns:true ソケットがノンブロッキングモードであり、操作がブロックされたために最後のソケット操作が失敗した場合 がノンブロッキングモードであり、操作がブロックされた、 または、ソケットがブロッキングモードで、 または を設定した、 を設定し、操作がタイムアウトした場合である。SNDTIMEO RCVTIMEO
- enum
AddressFamily: ushort; - アドレス解決に使用した通信ドメイン
UNSPEC- 未指定のアドレスファミリ
UNIX- ローカル通信(Unix ソケット)
INET- インターネットプロトコルバージョン4
IPX- ノベルIPX
APPLETALK- アップルトーク
INET6- インターネットプロトコルバージョン6
- enum
SocketType: int; - 通信セマンティクス
STREAM- シーケンス化された信頼性の高い双方向通信ベースのバイトストリーム
DGRAM- コネクションレスで、最大長が固定された信頼性の低いデータグラム。
RAW- 生のプロトコル・アクセス
RDM- 信頼性のあるメッセージ・データグラム
SEQPACKET- シーケンス化された、信頼性の高い、双方向接続ベースのデータグラム。
- enum
ProtocolType: int; - プロトコル
IP- インターネット・プロトコル・バージョン4
ICMP- インターネット制御メッセージプロトコル
IGMP- インターネットグループ管理プロトコル
GGP- ゲートウェイ間プロトコル
TCP- 伝送制御プロトコル
PUP- PARCユニバーサルパケットプロトコル
UDP- ユーザーデータグラムプロトコル
IDP- ゼロックスNSプロトコル
RAW- 生のIPパケット
IPV6- インターネット・プロトコル・バージョン6
- class
Protocol; - プロトコル情報を取得するためのクラス。
例:
auto proto = new Protocol; writeln("About protocol TCP:"); if (proto.getProtocolByType(ProtocolType.TCP)) { writefln(" Name: %s", proto.name); foreach (string s; proto.aliases) writefln(" Alias: %s", s); } else writeln(" No information found");
- ProtocolType
type;
stringname;
string[]aliases; - これらのメンバは、以下の関数のいずれかが正常にコールされたときに入力される:
- nothrow @trusted bool
getProtocolByName(scope const(char)[]name); - Returns:失敗した場合はfalseとなる。
- nothrow @trusted bool
getProtocolByType(ProtocolTypetype); - Returns:失敗時false
- class
Service; - サービス情報を取得するためのクラス。
例:
auto serv = new Service; writeln("About service epmap:"); if (serv.getServiceByName("epmap", "tcp")) { writefln(" Service: %s", serv.name); writefln(" Port: %d", serv.port); writefln(" Protocol: %s", serv.protocolName); foreach (string s; serv.aliases) writefln(" Alias: %s", s); } else writefln(" No service for epmap.");
- string
name;
string[]aliases;
ushortport;
stringprotocolName; - これらのメンバは、以下の関数のいずれかが正常にコールされたときに入力される:
- nothrow @trusted bool
getServiceByName(scope const(char)[]name, scope const(char)[]protocolName= null);
nothrow @trusted boolgetServiceByPort(ushortport, scope const(char)[]protocolName= null); - プロトコル名が省略された場合は、任意のプロトコルがマッチする。Returns:失敗した場合は false を返す。
- class
HostException: std.socket.SocketOSException; - InternetHost からスローされる例外のクラス。
- class
InternetHost; - IPv4アドレスを解決するクラス。このクラスを直接使うのではなく、getAddress 、parseAddress 、Address のメソッドの使用を検討すること。 このクラスを直接使うのではなくExamples:
InternetHost ih = new InternetHost; ih.getHostByAddr(0x7F_00_00_01); writeln(ih.addrList[0]); // 0x7F_00_00_01 ih.getHostByAddr("127.0.0.1"); writeln(ih.addrList[0]); // 0x7F_00_00_01 if (!ih.getHostByName("www.digitalmars.com")) return; // インターネットに接続していなくても失敗しない assert(ih.addrList.length); InternetAddress ia = new InternetAddress(ih.addrList[0], InternetAddress.PORT_ANY); assert(ih.name == "www.digitalmars.com" || ih.name == "digitalmars.com", ih.name); /* テスト・スイートで以下のassertがランダムに失敗する。 * https://issues.dlang.org/show_bug.cgi?id=22791 * だから、失敗したら無視すればいい。 */ //assert(ih.getHostByAddr(ih.addrList[0])); if (ih.getHostByAddr(ih.addrList[0])) { string getHostNameFromInt = ih.name.dup; // これはコンパイラのテスト・スイートでランダムに失敗する //assert(ih.getHostByAddr(ia.toAddrString())); if (ih.getHostByAddr(ia.toAddrString())) { string getHostNameFromStr = ih.name.dup; writeln(getHostNameFromInt); // getHostNameFromStr } }
- string
name;
string[]aliases;
uint[]addrList; - これらのメンバは、以下の関数のいずれかが正常に呼び出されたときに値が設定される:
- @trusted bool
getHostByName(scope const(char)[]name); - ホスト名を解決する。Returns:解決できない場合はfalseを返す。
- @trusted bool
getHostByAddr(uintaddr); - IPv4アドレス番号を解決する。Parameters:
uint addr解決するIPv4アドレスをホストバイトオーダーで指定する。 Returns:解決できない場合はfalse。 - @trusted bool
getHostByAddr(scope const(char)[]addr); - 前述と同じだが、addrはIPv4アドレス文字列である。 のIPv4アドレス文字列である。Returns:解決できない場合はfalseを指定する。
- struct
AddressInfo; - getAddressInfo で取得したソケットアドレスに関する情報を保持する。
- AddressFamily
family; - アドレスファミリ
- SocketType
type; - ソケット型
- ProtocolType
protocol; - プロトコル
- Address
address; - ソケットアドレス
- string
canonicalName; - AddressInfoFlags.CANONNAME が使用される場合、カノニカル名。
- enum
AddressInfoFlags: int; - getaddrinfo ですべてのプラットフォームでサポートされるフラグのサブセットである。 getAddressInfo のオプションフラグを指定する。
PASSIVE- 結果のアドレスは、Socket.bind への呼び出しで使用される。
CANONNAME- 正規名は、最初のAddressInfo のcanonicalName メンバーに返される。
NUMERICHOST- getAddressInfo に渡されるnode パラメータは、数値文字列でなければならない。 これにより、長くなる可能性のあるネットワークホストアドレスの検索が 抑えられる。
- AddressInfo[]
getAddressInfo(T...)(scope const(char)[]node, scope Toptions); - ホスト名からソケットアドレスへのプロトコルに依存しない変換を行う。 アドレスへのプロトコルに依存しない変換を提供する。高度な機能を必要としない場合は、古いシステムとの互換性のために getAddress の使用を検討すること。Returns:1つのソケットアドレスに1つのAddressInfo を持つ配列。Throws:SocketOSException 失敗した場合、または この関数が現在のシステムで利用できない場合。 SocketFeatureExceptionParameters:
const(char)[] nodeホスト名または数値アドレスを含む文字列 T optionsオプションの追加パラメーターを "型"で指定する: - string - サービス名またはポート番号
- AddressInfoFlags - オプションフラグ
- AddressFamily - フィルタリングするアドレスファミリ
- SocketType - フィルタリングするソケット型
- ProtocolType - プロトコル
例:
// DNSのラウンドトリップ解決 auto results = getAddressInfo("www.digitalmars.com"); assert(results[0].address.toHostNameString() == "digitalmars.com"); // Canonical名 results = getAddressInfo("www.digitalmars.com", AddressInfoFlags.CANONNAME); assert(results[0].canonicalName == "digitalmars.com"); // IPv6解決 results = getAddressInfo("ipv6.google.com"); assert(results[0].family == AddressFamily.INET6); // マルチホーム解決 results = getAddressInfo("google.com"); assert(results.length > 1); // IPv4の解析 results = getAddressInfo("127.0.0.1", AddressInfoFlags.NUMERICHOST); assert(results.length && results[0].family == AddressFamily.INET); // IPv6の解析 results = getAddressInfo("::1", AddressInfoFlags.NUMERICHOST); assert(results.length && results[0].family == AddressFamily.INET6);
- @safe Address[]
getAddress(scope const(char)[]hostname, scope const(char)[]service= null);
@safe Address[]getAddress(scope const(char)[]hostname, ushortport); - ホスト名からソケットアドレスへのプロトコルに依存しない変換を提供する アドレスへのプロトコルに依存しない変換を提供する。現在のシステムがサポートしていればgetAddressInfo を使用する、 それ以外の場合はInternetHost を使用する。Returns:1つのソケットアドレスにつき、1つのAddress インスタンスを持つ配列である。Throws:SocketOSException 失敗すると
例:
writeln("Resolving www.digitalmars.com:"); try { auto addresses = getAddress("www.digitalmars.com"); foreach (address; addresses) writefln(" IP: %s", address.toAddrString()); } catch (SocketException e) writefln(" Lookup failed: %s", e.msg);
- @safe Address
parseAddress(scope const(char)[]hostaddr, scope const(char)[]service= null);
@safe AddressparseAddress(scope const(char)[]hostaddr, ushortport); - プロトコルに依存しないネットワークアドレスの解析を提供する。名前解決を試みない。 名前解決を試みない。getAddressInfo 現在のシステムがサポートしていれば AddressInfoFlags.NUMERICHOST を使う。 InternetAddress を使用する。Returns:指定されたアドレスを表すAddress インスタンス。Throws:SocketException 失敗した場合
例:
writeln("Enter IP address:"); string ip = readln().chomp(); try { Address address = parseAddress(ip); writefln("Looking up reverse of %s:", address.toAddrString()); try { string reverse = address.toHostNameString(); if (reverse) writefln(" Reverse name: %s", reverse); else writeln(" Reverse hostname not found."); } catch (SocketException e) writefln(" Lookup error: %s", e.msg); } catch (SocketException e) { writefln(" %s is not a valid IP address: %s", ip, e.msg); }
- class
AddressException: std.socket.SocketOSException; - Address からスローされる例外のためのクラス。
- abstract class
Address; - ソケットアドレスを表す抽象クラス
例:
writeln("About www.google.com port 80:"); try { Address[] addresses = getAddress("www.google.com", 80); writefln(" %d addresses found.", addresses.length); foreach (int i, Address a; addresses) { writefln(" Address %d:", i+1); writefln(" IP address: %s", a.toAddrString()); writefln(" Hostname: %s", a.toHostNameString()); writefln(" Port: %s", a.toPortString()); writefln(" Service name: %s", a.toServiceNameString()); } } catch (SocketException e) writefln(" Lookup error: %s", e.msg);
- abstract pure nothrow @nogc @property @safe sockaddr*
name();
abstract const pure nothrow @nogc @property @safe const(sockaddr)*name(); - sockaddr 構造体へのポインタを返す。
- abstract const pure nothrow @nogc @property @safe socklen_t
nameLen(); - sockaddr 構造体の実際のサイズを返す。
- const pure nothrow @nogc @property @safe AddressFamily
addressFamily(); - このアドレスのファミリ。
- const @safe string
toAddrString(); - ホストアドレスを人間が読める文字列として取得しようとする。Throws:AddressException 失敗した場合、または このアドレスファミリーのアドレス検索が現在のシステムで利用できない場合 で利用できない。SocketFeatureException
- const @safe string
toHostNameString(); - ホスト名を完全修飾ドメイン名として取得しようとする。Returns:このAddress に対応するFQDN、またはホスト名が解決しなかった場合はnull 。 に対応するFQDN。Throws:AddressException に対応するFQDN。 このアドレスファミリーのホスト名検索が現在のシステムで利用できない場合 のホスト名を検索できない。SocketFeatureException
- const @safe string
toPortString(); - 数値ポート番号を文字列として取得しようとする。Throws:AddressException 失敗した場合、あるいは このアドレスファミリーのポート番号検索が現在のシステムで利用できない場合 を取得しようとする。SocketFeatureException
- const @safe string
toServiceNameString(); - サービス名を文字列として取得しようとする。Throws:AddressException 失敗した場合、あるいは このアドレスファミリーのサービス名検索が現在のシステムで利用できない場合 のサービス名を文字列で取得しようとする。SocketFeatureException
- const @safe string
toString(); - このアドレスを表す可読文字列。
- class
UnknownAddress: std.socket.Address; - 未知のソケットアドレスをカプセル化する。
- class
UnknownAddressReference: std.socket.Address; - 任意の ソケットアドレスへの参照をカプセル化する。
- pure nothrow @nogc @safe this(sockaddr*
sa, socklen_tlen); - 指定されたsockaddr への参照でAddress を構築する。
- pure nothrow @system this(const(sockaddr)*
sa, socklen_tlen); - 指定されたsockaddr のコピーでAddress を構築する。
- class
InternetAddress: std.socket.Address; - IPv4 (Internet Protocol version 4) ソケットアドレスをカプセル化する。このクラスを直接使用するのではなく、getAddress 、parseAddress 、Address メソッドの使用を考慮する。 メソッドを使用する。
- enum uint
ADDR_ANY; - 任意の IPv4 ホストアドレス。
- enum uint
ADDR_NONE; - 無効な IPv4 ホストアドレス。
- enum ushort
PORT_ANY; - 任意の IPv4 ポート番号。
- const pure nothrow @nogc @property @safe ushort
port(); - IPv4ポート番号(ホスト・バイト順)を返す。
- const pure nothrow @nogc @property @safe uint
addr(); - IPv4 アドレス番号(ホスト・バイト順)を返す。
- @safe this(scope const(char)[]
addr, ushortport); - 新しいInternetAddress を構築する。Parameters:
const(char)[] addrドット付き10進数形式のIPv4アドレス文字列a.b.c.d、 を使用して解決されるホスト名である。InternetHost オブジェクトを使って解決される。 ushort portポート番号は、PORT_ANY 。 - pure nothrow @nogc @safe this(uint
addr, ushortport);
pure nothrow @nogc @safe this(ushortport); - 新しいInternetAddress を構築する。Parameters:
uint addr(オプション) ホストバイトオーダーのIPv4アドレス。ADDR_ANY 。 ushort portポート番号、PORT_ANY である。 - pure nothrow @nogc @safe this(sockaddr_in
addr); - 新しいInternetAddress を構築する。Parameters:
sockaddr_in addrgetifaddrsなどの低レベルAPIコールから得られるsockaddr_in。 - const @trusted string
toAddrString(); - 人間が読み取り可能な文字列で、IPv4アドレスをドット付き10進数で表す。
- const @safe string
toPortString(); - IPv4ポートを表す人間が読める文字列。
- const @safe string
toHostNameString(); - ホスト名を完全修飾ドメイン名で取得しようとする。Returns:このInternetAddress に対応するFQDN、またはホスト名が解決しない場合は null ホスト名が解決しなかった場合Throws:AddressException を返す。
- const @safe bool
opEquals(Objecto); - 別の 等価比較のサポートを提供する。Returns:InternetAddressが同じアドレスとポート番号を共有する場合、trueを返す。 になる。Examples:
auto addr1 = new InternetAddress("127.0.0.1", 80); auto addr2 = new InternetAddress("127.0.0.2", 80); writeln(addr1); // addr1 assert(addr1 != addr2);
- static nothrow @trusted uint
parse(scope const(char)[]addr); - IPv4アドレス文字列をドット付き10進数のa.b.c.d形式で解析する。 でパースし、その数値を返す。Returns:文字列が正規のIPv4アドレスでない場合、a.b.c.d、 ADDR_NONE が返される。
- static nothrow @trusted string
addrToString(uintaddr); - ホストバイトオーダーのIPv4アドレス番号を、人間が読み取り可能な文字列に変換する。 文字列に変換する。
- class
Internet6Address: std.socket.Address; - IPv6 (Internet Protocol version 6) ソケットアドレスをカプセル化する。このクラスを直接使用するのではなく、getAddress 、parseAddress 、Address メソッドの使用を考慮すること。 メソッドを使用することを考慮する。
- static pure nothrow @nogc @property ref @safe const(ubyte)[16]
ADDR_ANY(); - 任意の IPv6 ホストアドレス。
- enum ushort
PORT_ANY; - 任意の IPv6 ポート番号。
- const pure nothrow @nogc @property @safe ushort
port(); - IPv6 ポート番号を返す
- const pure nothrow @nogc @property @safe ubyte[16]
addr(); - IPv6 アドレスを返す。
- @trusted this(scope const(char)[]
addr, scope const(char)[]service= null); - 新しいInternet6Address を構築する。Parameters:
const(char)[] addrRFC2373に記述されている形式のIPv6ホストアドレス文字列、 または、getAddressInfo を使用して解決されるホスト名。 const(char)[] service(オプション)サービス名。 - @safe this(scope const(char)[]
addr, ushortport); - 新しいInternet6Address を構築する。Parameters:
const(char)[] addrRFC 2373に記述されている形式のIPv6ホストアドレス文字列、 またはgetAddressInfo を使用して解決されるホスト名である。 ushort portポート番号は、PORT_ANY 。 - pure nothrow @nogc @safe this(ubyte[16]
addr, ushortport);
pure nothrow @nogc @safe this(ushortport); - 新しいInternet6Address を構築する。Parameters:
ubyte[16] addr(オプション) ホストバイトオーダーのIPv6ホストアドレス、または ADDR_ANY. ushort portポート番号は、PORT_ANY 。 - pure nothrow @nogc @safe this(sockaddr_in6
addr); - 新しいInternet6Address を構築する。Parameters:
sockaddr_in6 addrsockaddr_in6は、getifaddrsのような低レベルのAPIコールから取得される。 - static @trusted ubyte[16]
parse(scope const(char)[]addr); - IPv6ホストアドレス文字列をRFC 2373の記述に従って解析し、そのアドレスを返す。 アドレスを返す。Throws:SocketException エラー時に返される。
- class
UnixAddress: std.socket.Address; - Unix ドメインソケット(AF_UNIX)のアドレスをカプセル化する、 すなわち、ファイルシステムのパス名にバインドされたソケットである。 サポートされているシステムでのみ利用可能である。Linuxは抽象アドレス名前空間もサポートしている。 はファイルシステムから独立している。ソケットアドレスは抽象アドレスである。 であり、path がヌルバイト('\0')で始まる。抽象アドレスの他の 抽象アドレスの他の位置でのヌルバイトは許容され、特別な意味はない。 特別な意味はない。
例:
auto addr = new UnixAddress("/var/run/dbus/system_bus_socket"); auto abstractAddr = new UnixAddress("\0/tmp/dbus-OtHLWmCLPR");
See Also:- @safe this(scope const(char)[]
path); - 指定されたパスから新しいUnixAddress を構築する。
- pure nothrow @nogc @safe this(sockaddr_un
addr); - 新しいUnixAddress を構築する。Parameters:
sockaddr_un addr下位レベルのAPIコールから取得したsockaddr_un。 - const @property @safe string
path();
const @safe stringtoString(); - 基礎となるパスを取得する。
- class
SocketAcceptException: std.socket.SocketOSException; - Socket.accept でスローされる例外。
- enum
SocketShutdown: int; - ソケットのシャットダウン方法:
RECEIVE- ソケットの受信を禁止する
SEND- ソケット送信を禁止する
BOTH- 受信と送信の両方
- enum
SocketFlags: int; - ソケットフラグを OR で指定する:
NONE- フラグを指定しない
OOB- 帯域外ストリームデータ
PEEK- 受信データをキューから削除せずに覗き見る。
DONTROUTE- このフラグは無視してもよい。このフラグは無視してもよい。
- struct
TimeVal; - 持続時間タイムアウト値。
- inout pure nothrow @nogc @property ref @safe inout(tv_sec_t)
seconds() return; - 秒数。
- inout pure nothrow @nogc @property ref @safe inout(tv_usec_t)
microseconds() return; - 追加マイクロ秒数。
- class
SocketSet; - Socket.select で使用するソケットのコレクション。
SocketSetプラットフォームfd_set 型をラップする。ただし fd_set,SocketSetとは異なり、静的にFD_SETSIZE などの制限はなく、必要に応じて増加する。- pure nothrow @safe this(size_t
size= FD_SETSIZE); - 特定の初期容量を持つSocketSetを作成する(デフォルトは FD_SETSIZE デフォルトはシステムのデフォルト容量)。
- pure nothrow @nogc @safe void
reset(); - コレクションにSocketが0個になるように、SocketSet をリセットする。
- pure nothrow @safe void
add(Sockets); - Socket をコレクションに追加する。 このソケットはまだコレクションに存在してはならない。
- pure nothrow @safe void
remove(Sockets); - コレクションからSocket を削除する。 ソケットがコレクションにない場合は何もしない。
- const pure nothrow @nogc @safe int
isSet(Sockets); - このSocket がコレクションにある場合、0 以外を返す。
- const pure nothrow @nogc @property @safe uint
max(); - Returns:このSocketSet の現在の容量。正確な 戻り値の正確な意味はプラットフォームによって異なる。
注釈: D 2.065以降、この値は制限を意味しない。 SocketSet D2.065以降、この値は制限を示すものではない。 自動的に容量を増やす。
- enum
SocketOptionLevel: int; - ソケットオプションが定義されているレベル:
SOCKET- ソケットレベル
IP- インターネットプロトコルバージョン4レベル
ICMP- インターネット制御メッセージプロトコルレベル
IGMP- インターネットグループ管理プロトコルレベル
GGP- ゲートウェイ間プロトコルレベル
TCP- 伝送制御プロトコルレベル
PUP- PARC ユニバーサルパケットプロトコルレベル
UDP- ユーザーデータグラムプロトコルレベル
IDP- Xerox NSプロトコルレベル
RAW- 生IPパケットレベル
IPV6- インターネットプロトコルバージョン6レベル
- struct
Linger; - SocketOption.LINGERで使用するリンガー情報。
- inout pure nothrow @nogc @property ref @safe inout(l_onoff_t)
on() return; - オンの場合は非ゼロ。
- inout pure nothrow @nogc @property ref @safe inout(l_linger_t)
time() return; - リンガー時間。
- enum
SocketOption: int; - ソケットオプションを指定する:
DEBUG- デバッグ情報を記録する
BROADCAST- ブロードキャストメッセージの送信を許可する
REUSEADDR- アドレスのローカル再利用を許可する
LINGER- 未送信のデータがある場合、クローズで待機する
OOBINLINE- 帯域外データを帯域内で受信する
SNDBUF- 送信バッファサイズ
RCVBUF- 受信バッファサイズ
DONTROUTE- ルーティングしない
SNDTIMEO- 送信タイムアウト
RCVTIMEO- 受信タイムアウト
ERROR- エラーステータスの取得とクリア
KEEPALIVE- キープアライブパケットを有効にする
ACCEPTCONN- 聞く
RCVLOWAT- 処理する最小入力バイト数
SNDLOWAT- 処理する最小出力バイト数
TYPE- ソケット型
TCP_NODELAY- 送信合体用のNagleアルゴリズムを無効にする
IPV6_UNICAST_HOPS- IPユニキャストホップ制限
IPV6_MULTICAST_IF- IPマルチキャストインターフェース
IPV6_MULTICAST_LOOP- IPマルチキャストループバック
IPV6_MULTICAST_HOPS- IPマルチキャストホップ
IPV6_JOIN_GROUP- IPグループ・メンバーシップを追加する
IPV6_LEAVE_GROUP- IPグループメンバーシップを削除する
IPV6_V6ONLY- ワイルドカードバインドを AF_INET6-only として扱う
- class
Socket; - Berkeleyソケットインターフェースを使用してネットワーク通信エンドポイントを作成する を使用してネットワーク通信エンドポイントを作成するクラスである。
- @trusted this(AddressFamily
af, SocketTypetype, ProtocolTypeprotocol);
@safe this(AddressFamilyaf, SocketTypetype);
@trusted this(AddressFamilyaf, SocketTypetype, scope const(char)[]protocolName); - ブロッキングソケットを作成する。ブロックソケットを作成する。 アドレスファミリ内でこのソケット型をサポートする単一のプロトコル型が存在する場合、ProtocolType は省略できる。 を省略できる。
- @safe this(scope const AddressInfo
info); - 指定された AddressInfo 構造体のパラメータを使用してブロッキングソケットを作成する。
- pure nothrow @nogc @safe this(socket_t
sock, AddressFamilyaf); - 既存のソケットハンドルを使用する。
- const pure nothrow @nogc @property @safe socket_t
handle(); - ソケットハンドルを取得する。
- pure nothrow @nogc @property @safe socket_t
release(); - Socket オブジェクトからソケットハンドルを解放する。ソケットハンドルを解放すると ソケットハンドルが解放されると、ソケットオブジェクトのメソッドは使用できなくなる。これは ソケットのデストラクタはソケットを閉じない。 あなたの責任となる。リリースせずにハンドルを取得するには、handle プロパティを使用する。
- const nothrow @nogc @property @trusted bool
blocking();
@property @trusted voidblocking(boolbyes); - ソケットのブロッキングフラグを取得/設定する。ソケットがブロッキングしている場合、receive(), accept(), send() のコールはブロックされ、データ/アクションを待つ。 の呼び出しはブロックされ、データ/アクションを待つ。 ノンブロッキングソケットは、ブロッキングせずに直ちにリターンする。
- @property @safe AddressFamily
addressFamily(); - ソケットのアドレスファミリを取得する。
- const @property @trusted bool
isAlive(); - ソケットのアドレスファミリを取得する。
- @trusted void
bind(Addressaddr); - このソケットにローカルアドレスを関連付ける。Parameters:
Address addrこの Addressを指定する。 Throws:SocketOSExceptionソケットをバインドできない場合 - @trusted void
connect(Addressto); - 接続を確立する。ソケットがブロックされている場合、connect は接続が確立されるまで待つ。 接続が確立されるのを待つ。ソケットがノンブロッキングの場合、connect は直ちに戻り、接続の試みはまだ進行中である。
- @trusted void
listen(intbacklog); - bind 着信接続をリッスンする。 が呼び出されなければならない。
listen.を呼び出す必要がある。backlogは、保留中の 着信コネクションは、acceptedまでキューに入れられる。 - protected pure nothrow @safe Socket
accepting(); - 新しい接続のために新しいSocket を作成しなければならないとき、accept によって呼び出される。 によって呼び出される。派生クラスを使用するには、このメソッドをオーバーライドし、そのクラスのインスタンスを返す。 のインスタンスを返す。返されるSocket のハンドルは、設定されてはならない。 Socket には、このような場合に使用するプロテクトされたコンストラクタthis() がある。 がある。派生クラスを使用する場合はオーバーライドする。 返されたソケットのハンドルは設定してはならない。
- @trusted Socket
accept(); - 着信接続を受け付ける。ソケットがブロッキングされている場合
accept接続要求を待つ。接続を受け付けられない場合はSocketAcceptException をスローする。 をスローする。派生クラスでの使用についてはaccepting を参照のこと。 - nothrow @nogc @trusted void
shutdown(SocketShutdownhow); - 送受信を無効にする。
- nothrow @nogc scope @trusted void
close(); - すべての接続を直ちに切断し、ソケットリソースを解放する。 Socket オブジェクトは
close. の前にshutdown を呼び出すことを推奨する。closeの前に呼び出すことを推奨する。 を呼び出すことを推奨する。 - static @property @trusted string
hostName(); - Returns:ローカルマシンのホスト名
- @property @trusted Address
remoteAddress(); - リモートエンドポイントAddress.
- @property @trusted Address
localAddress(); - ローカルエンドポイントAddress.
- enum int
ERROR; - 送信または受信エラーコード。wouldHaveBlocked を参照のこと、 lastSocketError およびSocket.getErrorText を参照のこと。 を参照のこと。
- @trusted ptrdiff_t
send(scope const(void)[]buf, SocketFlagsflags);
@safe ptrdiff_tsend(scope const(void)[]buf); - コネクション上でデータを送信する。ソケットがブロッキング中で バッファ領域が残っていない、
sendを待つ。Returns:実際に送信されたバイト数、失敗した場合はSocket.ERROR を返す。 失敗した。 - @trusted ptrdiff_t
sendTo(scope const(void)[]buf, SocketFlagsflags, Addressto);
@safe ptrdiff_tsendTo(scope const(void)[]buf, Addressto);
@trusted ptrdiff_tsendTo(scope const(void)[]buf, SocketFlagsflags);
@safe ptrdiff_tsendTo(scope const(void)[]buf); - 特定の宛先アドレスにデータを送信する。宛先アドレスが 宛先アドレスが指定されていない場合は、コネクションが確立しており、そのアドレスが使用される。 ソケットがブロック中で、バッファ領域が残っていない場合、
sendToを待つ。Returns:実際に送信されたバイト数、失敗した場合はSocket.ERROR を返す。 失敗した場合。 - @trusted ptrdiff_t
receive(scope void[]buf, SocketFlagsflags);
@safe ptrdiff_treceive(scope void[]buf); - コネクションでデータを受信する。ソケットがブロックしている場合、
receiveデータを受信するまで待つ。Returns:実際に受信したバイト数。リモート側が接続を閉じた場合は0 、失敗した場合は を返す。 を、失敗した場合はSocket.ERROR を返す。 - @trusted ptrdiff_t
receiveFrom(scope void[]buf, SocketFlagsflags, ref Addressfrom);
@safe ptrdiff_treceiveFrom(scope void[]buf, ref Addressfrom);
@trusted ptrdiff_treceiveFrom(scope void[]buf, SocketFlagsflags);
@safe ptrdiff_treceiveFrom(scope void[]buf); - データを受信し、リモートエンドポイントAddress を取得する。 ソケットがブロックされている場合
receiveFrom受信するデータがあるまで待つ。 を待つ。Returns:実際に受信したバイト数。リモート側が接続を閉じた場合は0 、失敗した場合は を返す。 失敗した場合はSocket.ERROR を返す。 - @trusted int
getOption(SocketOptionLevellevel, SocketOptionoption, scope void[]result); - ソケットオプションを取得する。Returns:に書き込まれたバイト数。
result. 実際の結果のバイト長 - getsockopt() とは大きく異なる。 - @trusted int
getOption(SocketOptionLevellevel, SocketOptionoption, out int32_tresult); - 整数オプションや真偽値オプションを取得する場合によく使われる。
- @trusted int
getOption(SocketOptionLevellevel, SocketOptionoption, out Lingerresult); - linger オプションを取得する。
- @trusted void
getOption(SocketOptionLevellevel, SocketOptionoption, out Durationresult); - タイムアウト(継続時間)オプションを取得する。
- @trusted void
setOption(SocketOptionLevellevel, SocketOptionoption, scope void[]value); - ソケットオプションを設定する。
- @trusted void
setOption(SocketOptionLevellevel, SocketOptionoption, int32_tvalue); - 整数オプションやブーリアンオプションを設定する。
- @trusted void
setOption(SocketOptionLevellevel, SocketOptionoption, Lingervalue); - linger オプションを設定する。
- @trusted void
setOption(SocketOptionLevellevel, SocketOptionoption, Durationvalue); - SocketOption.SNDTIMEO タイムアウト(継続時間)オプションを設定する。 RCVTIMEO.ゼロはタイムアウトがないことを示す。典型的なアプリケーションでは、ブロッキングソケットにタイムアウトを設定する代わりに を使用することも検討したい。
注釈: 受信タイムアウトの設定は一般的にかなり正確である。 受信タイムアウトの設定は一般的に非常に正確であるが Windowsでは、注意すべき2つの問題がある。 がある:第一に、文書化されていないが、有効な まず、文書化されていないが、有効なタイムアウト時間はソケットで設定されたタイムアウト時間に半 秒を足したものになるようである。 秒である。
setOption()はそれを補正しようとしているが、それでも500ms以下のタイムアウトは不可能である、 Windowsでは500ミリ秒以下のタイムアウトは不可能である。第二に ブロッキングコールが戻ってくるまでの実際の時間は、10msのオーダーでランダムに変化する。 は10msのオーダーでランダムに変化する。Parameters:SocketOptionLevel levelソケットオプションが定義されるレベル。 SocketOption optionSocketOption.SNDTIMEO またはSocketOption.RCVTIMEO のどちらかである。 Duration value設定するタイムアウト時間。負数であってはならない。 Throws:SocketException オプションの設定に失敗した場合例:
import std.datetime; import std.typecons; auto pair = socketPair(); scope(exit) foreach (s; pair) s.close(); // 受信タイムアウトを設定し、データが届かないことを承知で // ソケットペアの片方で待つ。 pair[0].setOption(SocketOptionLevel.SOCKET, SocketOption.RCVTIMEO, dur!"seconds"(1)); auto sw = StopWatch(Yes.autoStart); ubyte[1] buffer; pair[0].receive(buffer); writefln("Waited %s ms until the socket timed out.", sw.peek.msecs);
- @safe string
getErrorText(); - このソケットのエラー状態をテキストで取得する。 ソケットのエラーステータスをクリアする。
- @trusted void
setKeepAlive(inttime, intinterval); - 指定されたパラメータで TCP キープアライブを有効にする。Parameters:
int time最初の キープアライブパケットを送信する int intervalキープアライブパケットが送信されるまでの秒数。 パケットを送信するまでの秒数。 Throws:SocketOSException オプションの設定に失敗した場合 キープアライブパラメータの設定が がサポートされていない場合。SocketFeatureException - static @trusted int
select(SocketSetcheckRead, SocketSetcheckWrite, SocketSetcheckError, Durationtimeout);
static @safe intselect(SocketSetcheckRead, SocketSetcheckWrite, SocketSetcheckError);
static @trusted intselect(SocketSetcheckRead, SocketSetcheckWrite, SocketSetcheckError, TimeVal*timeout); - ソケットの状態が変わるのを待つ。待ち時間が core.time.Durationまたは TimeVal タイムアウトが指定されなかったり TimeVal がnull の場合、最大タイムアウトが使われる。タイムアウトが指定されていない場合、またはTimeVal が返されるとき、タイムアウトの値は未定義である。
selectが返される。Returns:タイムアウト時に0 、ステータスが変更されたソケットの数を示す、 または中断時に-1 。戻り値が0 より大きい場合、 は、ステータスを持つソケットだけを含むように更新される、 を超える場合、SocketSets は、ステータスが変更されたソケットのみを含むように更新される。 を含むように更新される。接続中のソケットの場合、書き込みステータスの変化は接続が確立され、接続が可能になったことを意味する。 接続中のソケットでは、書き込みステータスの変化は接続が確立され送信できることを意味する。リスニングソケットの場合 接続中のソケットでは、書き込みステータスの変化は接続が確立され、送信できることを意味する。 受諾できることを意味する。 SocketSet イベントが発生したソケットのみを含むように更新された。 connect() のソケットでは、書き込み可能とは接続されていることを意味する。 listen() ソケットの場合、読み込み可能とはリスニングしていることを意味する。 Winsock 内部的に64ソケット/セットに制限されている可能性がある。Returns:イベント数、タイムアウトの場合は 0、割り込みの場合は -1 を指定する。 - protected pure nothrow @safe Address
createAddress(); - 他のアドレスをサポートするようにオーバーライドできる。Returns:現在のアドレス・ファミリ用の新しいAddress オブジェクト。
- class
TcpSocket: std.socket.Socket; - TCP ソケットのショートカット・クラス。
- @safe this(AddressFamily
family); - ブロッキングTCPソケットを構築する。
- @safe this();
- ブロック型 IPv4 TCP ソケットを構築する。
- @safe this(Address
connectTo); - ブロッキング TCP ソケットを構築し、指定されたAddress に接続する。
- class
UdpSocket: std.socket.Socket; - UDP ソケットのショートカット・クラス。
- @safe this(AddressFamily
family); - ブロッキングUDPソケットを構築する。
- @safe this();
- ブロッキングIPv4 UDPソケットを構築する。
- @trusted Socket[2]
socketPair(); - 接続されたソケットのペアを作成する。2つのソケットは区別できない。Throws:SocketException ソケットの作成に失敗した場合Examples:
immutable ubyte[4] data = [1, 2, 3, 4]; auto pair = socketPair(); scope(exit) foreach (s; pair) s.close(); pair[0].send(data[]); auto buf = new ubyte[data.length]; pair[1].receive(buf); writeln(buf); // data
Copyright © 1999-2025 by the D Language Foundation
DEEPL APIにより翻訳、ところどころ修正。
このページの最新版(英語)
このページの原文(英語)
翻訳時のdmdのバージョン: 2.108.0
サイト全体のドキュメントのdmdのバージョン: 2.109.1
最新のdmdのバージョン: 2.111.0 ダウンロード
翻訳日付:
HTML生成日時:
編集者: dokutoku