Net
ソースコード: lib/net.js
node:net モジュールは、ストリームベースの TCP または IPC サーバー (net.createServer()) およびクライアント (net.createConnection()) を作成するための非同期ネットワーク API を提供します。
以下を使用してアクセスできます:
import net from 'node:net';const net = require('node:net');IPC サポート
[履歴]
| バージョン | 変更点 |
|---|---|
| v20.8.0 | \0abstract のような抽象 Unix ドメインソケットパスへのバインドをサポートします。 Node.js \< v20.4.0 では '\0' をバインドできます。 |
node:net モジュールは、Windows の名前付きパイプ、および他のオペレーティングシステムの Unix ドメインソケットによる IPC をサポートします。
IPC 接続のパスの識別
net.connect()、net.createConnection()、server.listen()、および socket.connect() は、IPC エンドポイントを識別するために path パラメータを取ります。
Unix では、ローカルドメインは Unix ドメインとしても知られています。 path はファイルシステムのパス名です。 パス名の長さが sizeof(sockaddr_un.sun_path) の長さを超えると、エラーがスローされます。 一般的な値は、Linux では 107 バイト、macOS では 103 バイトです。 Node.js API の抽象化が Unix ドメインソケットを作成する場合、Unix ドメインソケットのリンクも解除します。 たとえば、net.createServer() は Unix ドメインソケットを作成し、server.close() はそれをリンク解除します。 しかし、ユーザーがこれらの抽象化の外で Unix ドメインソケットを作成する場合、ユーザーはそれを削除する必要があります。 同じことが、Node.js API が Unix ドメインソケットを作成したが、プログラムがクラッシュした場合にも当てはまります。 つまり、Unix ドメインソケットはファイルシステムに表示され、リンクが解除されるまで永続化されます。 Linux では、パスの先頭に \0 を追加して、Unix 抽象ソケットを使用できます (例: \0abstract)。 Unix 抽象ソケットへのパスはファイルシステムに表示されず、ソケットへの開いている参照がすべて閉じられると自動的に消えます。
Windows では、ローカルドメインは名前付きパイプを使用して実装されます。 path は \\?\pipe\ または \\.\pipe\ のエントリを参照 する必要があります。 任意の文字が許可されますが、後者は .. シーケンスの解決など、パイプ名の処理を行う場合があります。 見た目とは異なり、パイプ名前空間はフラットです。 パイプは 永続化されません。 パイプへの最後の参照が閉じられると削除されます。 Unix ドメインソケットとは異なり、Windows は所有プロセスが終了するとパイプを閉じて削除します。
JavaScript の文字列エスケープでは、次のように、追加のバックスラッシュエスケープでパスを指定する必要があります:
net.createServer().listen(
path.join('\\\\?\\pipe', process.cwd(), 'myctl'));クラス: net.BlockList
追加: v15.0.0, v14.18.0
BlockList オブジェクトは、特定の IP アドレス、IP 範囲、または IP サブネットへのインバウンドまたはアウトバウンドアクセスを無効にするためのルールを指定するために、いくつかのネットワーク API で使用できます。
blockList.addAddress(address[, type])
追加: v15.0.0, v14.18.0
address<string> | <net.SocketAddress> IPv4 または IPv6 アドレス。type<string>'ipv4'または'ipv6'のいずれか。 デフォルト:'ipv4'。
指定された IP アドレスをブロックするルールを追加します。
blockList.addRange(start, end[, type])
追加: v15.0.0, v14.18.0
start<string> | <net.SocketAddress> 範囲の開始 IPv4 または IPv6 アドレス。end<string> | <net.SocketAddress> 範囲の終了 IPv4 または IPv6 アドレス。type<string>'ipv4'または'ipv6'のいずれか。 デフォルト:'ipv4'。
start(包括的)から end(包括的)までの IP アドレス範囲をブロックするルールを追加します。
blockList.addSubnet(net, prefix[, type])
追加: v15.0.0, v14.18.0
net<string> | <net.SocketAddress> ネットワーク IPv4 または IPv6 アドレス。prefix<number> CIDR プレフィックスビット数。 IPv4 の場合、これは0から32までの値でなければなりません。 IPv6 の場合、これは0から128の間でなければなりません。type<string>'ipv4'または'ipv6'のいずれか。 デフォルト:'ipv4'。
サブネットマスクとして指定された IP アドレス範囲をブロックするルールを追加します。
blockList.check(address[, type])
Added in: v15.0.0, v14.18.0
address<string> | <net.SocketAddress> チェックするIPアドレスtype<string>'ipv4'または'ipv6'のいずれか。 デフォルト:'ipv4'。- 戻り値: <boolean>
与えられたIPアドレスが BlockList に追加されたルールのいずれかに一致する場合、true を返します。
const blockList = new net.BlockList();
blockList.addAddress('123.123.123.123');
blockList.addRange('10.0.0.1', '10.0.0.10');
blockList.addSubnet('8592:757c:efae:4e45::', 64, 'ipv6');
console.log(blockList.check('123.123.123.123')); // Prints: true
console.log(blockList.check('10.0.0.3')); // Prints: true
console.log(blockList.check('222.111.111.222')); // Prints: false
// IPv4アドレスのIPv6表記は動作します:
console.log(blockList.check('::ffff:7b7b:7b7b', 'ipv6')); // Prints: true
console.log(blockList.check('::ffff:123.123.123.123', 'ipv6')); // Prints: trueblockList.rules
Added in: v15.0.0, v14.18.0
- Type: <string[]>
ブロックリストに追加されたルールのリスト。
BlockList.isBlockList(value)
Added in: v23.4.0
value<any> 任意の JS 値valueがnet.BlockListであれば、trueを返します。
Class: net.SocketAddress
Added in: v15.14.0, v14.18.0
new net.SocketAddress([options])
Added in: v15.14.0, v14.18.0
options<Object>
socketaddress.address
追加: v15.14.0, v14.18.0
- 型: <string>
socketaddress.family
追加: v15.14.0, v14.18.0
- 型: <string>
'ipv4'または'ipv6'のいずれか。
socketaddress.flowlabel
追加: v15.14.0, v14.18.0
- 型: <number>
socketaddress.port
追加: v15.14.0, v14.18.0
- 型: <number>
SocketAddress.parse(input)
追加: v23.4.0
input<string> IPアドレスとオプションのポートを含む入力文字列。例:123.1.2.3:1234または[1::1]:1234。- 戻り値: <net.SocketAddress> パースが成功した場合は
SocketAddressを返します。 それ以外の場合はundefinedを返します。
Class: net.Server
追加: v0.1.90
- 拡張: <EventEmitter>
このクラスは、TCPまたはIPCサーバーを作成するために使用されます。
new net.Server([options][, connectionListener])
options<Object>net.createServer([options][, connectionListener])を参照してください。connectionListener<Function>'connection'イベントのリスナーとして自動的に設定されます。- 戻り値: <net.Server>
net.Serverは、次のイベントを持つEventEmitterです。
Event: 'close'
追加: v0.5.0
サーバーが閉じるときに発生します。 接続が存在する場合、このイベントはすべての接続が終了するまで発生しません。
イベント: 'connection'
追加: v0.1.90
- <net.Socket> コネクションオブジェクト
新しいコネクションが確立されたときに発生します。socket は net.Socket のインスタンスです。
イベント: 'error'
追加: v0.1.90
エラーが発生したときに発生します。net.Socket とは異なり、'close' イベントは、server.close() が手動で呼び出されない限り、このイベントの直後には発生しません。 server.listen() の説明の例を参照してください。
イベント: 'listening'
追加: v0.1.90
server.listen() の呼び出し後、サーバーがバインドされたときに発生します。
イベント: 'drop'
追加: v18.6.0, v16.17.0
接続数が server.maxConnections の閾値に達すると、サーバーは新しい接続をドロップし、代わりに 'drop' イベントを発行します。 TCP サーバーの場合、引数は次のようになります。それ以外の場合、引数は undefined です。
data<Object> イベントリスナーに渡される引数。
server.address()
[履歴]
| バージョン | 変更点 |
|---|---|
| v18.4.0 | family プロパティが、数値の代わりに文字列を返すようになりました。 |
| v18.0.0 | family プロパティが、文字列の代わりに数値を返すようになりました。 |
| v0.1.90 | 追加: v0.1.90 |
IPソケットでリッスンしている場合、オペレーティングシステムによって報告された、バインドされた address、アドレスの family 名、およびサーバーの port を返します(OS割り当てのアドレスを取得するときに割り当てられたポートを見つけるのに役立ちます)。{ port: 12346, family: 'IPv4', address: '127.0.0.1' }。
パイプまたはUnixドメインソケットでリッスンしているサーバーの場合、名前は文字列として返されます。
const server = net.createServer((socket) => {
socket.end('goodbye\n');
}).on('error', (err) => {
// エラーをここで処理します。
throw err;
});
// 任意の未使用ポートを取得します。
server.listen(() => {
console.log('opened server on', server.address());
});server.address() は、'listening' イベントが発行される前、または server.close() を呼び出した後には null を返します。
server.close([callback])
追加: v0.1.90
callback<Function> サーバーが閉じられたときに呼び出されます。- 戻り値: <net.Server>
サーバーが新しい接続を受け入れるのを停止し、既存の接続を維持します。 この関数は非同期であり、すべての接続が終了し、サーバーが 'close' イベントを発行すると、サーバーは最終的に閉じられます。 オプションの callback は、'close' イベントが発生すると呼び出されます。 そのイベントとは異なり、サーバーが閉じられたときに開いていなかった場合、Error が唯一の引数として呼び出されます。
server[Symbol.asyncDispose]()
Added in: v20.5.0, v18.18.0
server.close() を呼び出し、サーバーが閉じたときに履行される Promise を返します。
server.getConnections(callback)
Added in: v0.9.7
callback<Function>- 戻り値: <net.Server>
サーバー上の同時接続の数を非同期で取得します。ソケットがフォークに送信された場合に機能します。
Callback は、2 つの引数 err と count を取ります。
server.listen()
接続をリッスンするサーバーを開始します。net.Server は、リッスンするものに応じて TCP または IPC サーバーになる可能性があります。
可能なシグネチャ:
server.listen(handle[, backlog][, callback])server.listen(options[, callback])- IPC サーバーの場合の
server.listen(path[, backlog][, callback]) - TCP サーバーの場合の
server.listen([port[, host[, backlog]]][, callback])
この関数は非同期です。サーバーがリスニングを開始すると、'listening' イベントが発行されます。最後のパラメータ callback は、'listening' イベントのリスナーとして追加されます。
すべての listen() メソッドは、保留中の接続キューの最大長を指定するために backlog パラメータを取ることができます。実際の長さは、Linux 上の tcp_max_syn_backlog や somaxconn などの sysctl 設定を通じて OS によって決定されます。このパラメータのデフォルト値は 511 (512 ではない) です。
すべての net.Socket は SO_REUSEADDR に設定されます (詳細については socket(7) を参照してください)。
最初の server.listen() 呼び出し中にエラーが発生した場合、または server.close() が呼び出された場合にのみ、server.listen() メソッドを再度呼び出すことができます。それ以外の場合は、ERR_SERVER_ALREADY_LISTEN エラーがスローされます。
リスニング時に発生する最も一般的なエラーの 1 つは EADDRINUSE です。これは、別のサーバーが要求された port / path / handle で既にリスニングしている場合に発生します。これを処理する 1 つの方法は、一定時間後に再試行することです。
server.on('error', (e) => {
if (e.code === 'EADDRINUSE') {
console.error('Address in use, retrying...');
setTimeout(() => {
server.close();
server.listen(PORT, HOST);
}, 1000);
}
});server.listen(handle[, backlog][, callback])
Added in: v0.5.10
handle<Object>backlog<number>server.listen()関数の共通パラメータcallback<Function>- 戻り値: <net.Server>
ポート、Unixドメインソケット、またはWindows名前付きパイプにすでにバインドされている指定されたhandleで、接続をリッスンするサーバーを起動します。
handleオブジェクトは、サーバー、ソケット(基になる_handleメンバーを持つもの)、または有効なファイル記述子であるfdメンバーを持つオブジェクトのいずれかになります。
ファイル記述子でのリスンは、Windowsではサポートされていません。
server.listen(options[, callback])
[履歴]
| バージョン | 変更点 |
|---|---|
| v23.1.0 | reusePort オプションがサポートされました。 |
| v15.6.0 | AbortSignal のサポートが追加されました。 |
| v11.4.0 | ipv6Only オプションがサポートされました。 |
| v0.11.14 | Added in: v0.11.14 |
options<Object> 必須。次のプロパティをサポートします。backlog<number>server.listen()関数の共通パラメータ。exclusive<boolean> デフォルト:falsehost<string>ipv6Only<boolean> TCPサーバーの場合、ipv6Onlyをtrueに設定すると、デュアルスタックのサポートが無効になります。つまり、ホスト::にバインドしても0.0.0.0はバインドされません。 デフォルト:false。reusePort<boolean> TCPサーバーの場合、reusePortをtrueに設定すると、同じホスト上の複数のソケットが同じポートにバインドできるようになります。着信接続は、オペレーティングシステムによってリスンしているソケットに分散されます。このオプションは、Linux 3.9+、DragonFlyBSD 3.6+、FreeBSD 12.0+、Solaris 11.4、AIX 7.2.5+など、一部のプラットフォームでのみ使用できます。 デフォルト:false。path<string>portが指定されている場合は無視されます。IPC接続のパスの識別を参照してください。port<number>readableAll<boolean> IPCサーバーの場合、パイプをすべてのユーザーが読み取り可能にします。 デフォルト:false。signal<AbortSignal> リッスンしているサーバーを閉じるために使用できるAbortSignal。writableAll<boolean> IPCサーバーの場合、パイプをすべてのユーザーが書き込み可能にします。 デフォルト:false。
callback<Function> functions.戻り値: <net.Server>
portが指定されている場合、server.listen([port[, host[, backlog]]][, callback])と同じように動作します。それ以外の場合、pathが指定されている場合は、server.listen(path[, backlog][, callback])と同じように動作します。どちらも指定されていない場合は、エラーがスローされます。
exclusiveがfalse(デフォルト)の場合、クラスタワーカーは同じ基になるハンドルを使用し、接続処理の責務を共有できます。exclusiveがtrueの場合、ハンドルは共有されず、ポートの共有を試みるとエラーが発生します。排他的ポートでリスンする例を以下に示します。
server.listen({
host: 'localhost',
port: 80,
exclusive: true,
});exclusiveがtrueで、基になるハンドルが共有されている場合、複数のワーカーが異なるバックログを持つハンドルをクエリする可能性があります。この場合、マスタープロセスに渡される最初のbacklogが使用されます。
IPCサーバーをルートとして起動すると、特権のないユーザーがサーバーパスにアクセスできなくなる可能性があります。readableAllとwritableAllを使用すると、すべてのユーザーがサーバーにアクセスできるようになります。
signalオプションが有効になっている場合、対応するAbortControllerで.abort()を呼び出すことは、サーバーで.close()を呼び出すのと似ています。
const controller = new AbortController();
server.listen({
host: 'localhost',
port: 80,
signal: controller.signal,
});
// 後で、サーバーを閉じたい場合。
controller.abort();server.listen(path[, backlog][, callback])
Added in: v0.1.90
path<string> サーバーがリッスンするパス。IPC接続のパスの識別を参照してください。backlog<number>server.listen()関数の共通パラメータ。callback<Function>。- 戻り値: <net.Server>
指定された path で接続をリッスンする IPC サーバーを起動します。
server.listen([port[, host[, backlog]]][, callback])
Added in: v0.1.90
port<number>host<string>backlog<number>server.listen()関数の共通パラメータ。callback<Function>。- 戻り値: <net.Server>
指定された port と host で接続をリッスンする TCP サーバーを起動します。
port が省略されたり、0 の場合、オペレーティングシステムは任意の未使用ポートを割り当てます。これは 'listening' イベントが発生した後、server.address().port を使用して取得できます。
host が省略された場合、IPv6 が利用可能な場合は 未指定の IPv6 アドレス (::) で、それ以外の場合は 未指定の IPv4 アドレス (0.0.0.0) でサーバーは接続を受け入れます。
ほとんどのオペレーティングシステムでは、未指定の IPv6 アドレス (::) をリッスンすると、net.Server が 未指定の IPv4 アドレス (0.0.0.0) もリッスンする可能性があります。
server.listening
追加: v5.7.0
- <boolean> サーバーが接続をリッスンしているかどうかを示します。
server.maxConnections
[履歴]
| バージョン | 変更点 |
|---|---|
| v21.0.0 | maxConnections を 0 に設定すると、すべての受信接続がドロップされます。以前は、Infinity として解釈されていました。 |
| v0.2.0 | 追加: v0.2.0 |
接続数が server.maxConnections の閾値に達した場合:
ソケットが child_process.fork() で子プロセスに送信された後は、このオプションを使用することはお勧めしません。
server.dropMaxConnection
追加: v23.1.0
接続数が [server.maxConnections][] の閾値に達したら、接続の終了を開始するには、このプロパティを true に設定します。この設定は、クラスタモードでのみ有効です。
server.ref()
追加: v0.9.1
- 戻り値: <net.Server>
unref() の反対です。以前に unref されたサーバーで ref() を呼び出しても、それが残りの唯一のサーバーである場合、プログラムは終了しません(デフォルトの動作)。サーバーが ref されている場合、ref() を再度呼び出しても効果はありません。
server.unref()
追加: v0.9.1
- 戻り値: <net.Server>
サーバーで unref() を呼び出すと、イベントシステムでこれが唯一のアクティブなサーバーである場合に、プログラムを終了できます。サーバーがすでに unref されている場合、unref() を再度呼び出しても効果はありません。
クラス: net.Socket
追加: v0.3.4
- 拡張: <stream.Duplex>
このクラスは、TCPソケットまたはストリーミングIPCエンドポイントの抽象化です(Windowsでは名前付きパイプを使用し、それ以外の場合はUnixドメインソケットを使用します)。また、EventEmitterでもあります。
net.Socketは、ユーザーが作成してサーバーと直接やり取りするために使用できます。たとえば、net.createConnection()によって返されるため、ユーザーはそれを使用してサーバーと通信できます。
また、Node.jsによって作成され、接続を受信したときにユーザーに渡されることもあります。たとえば、net.Serverで発行される'connection'イベントのリスナーに渡されるため、ユーザーはそれを使用してクライアントとやり取りできます。
new net.Socket([options])
[履歴]
| バージョン | 変更点 |
|---|---|
| v15.14.0 | AbortSignal のサポートが追加されました。 |
| v12.10.0 | onread オプションが追加されました。 |
| v0.3.4 | 追加: v0.3.4 |
options<Object> 利用可能なオプションは次のとおりです:allowHalfOpen<boolean>falseに設定すると、ソケットは読み取り側が終了したときに書き込み側を自動的に終了します。 詳細は、net.createServer()と'end'イベントを参照してください。 デフォルト:false。fd<number> 指定された場合、指定されたファイルディスクリプタを持つ既存のソケットをラップします。それ以外の場合は、新しいソケットが作成されます。onread<Object> 指定された場合、受信データは単一のbufferに格納され、ソケットにデータが到着すると提供されたcallbackに渡されます。 これにより、ストリーミング機能はデータを提供しなくなります。 ソケットは通常どおり'error'、'end'、および'close'などのイベントを発行します。pause()やresume()などのメソッドも期待どおりに動作します。buffer<Buffer> | <Uint8Array> | <Function> 受信データの保存に使用する再利用可能なメモリのチャンク、またはそのようなものを返す関数。callback<Function> この関数は、受信データのチャンクごとに呼び出されます。 2 つの引数が渡されます:bufferに書き込まれたバイト数とbufferへの参照。 この関数からfalseを返すと、暗黙的にソケットをpause()します。 この関数はグローバルコンテキストで実行されます。readable<boolean>fdが渡されたときにソケットでの読み取りを許可します。それ以外の場合は無視されます。 デフォルト:false。signal<AbortSignal> ソケットの破棄に使用できる Abort シグナル。writable<boolean>fdが渡されたときにソケットでの書き込みを許可します。それ以外の場合は無視されます。 デフォルト:false。
戻り値: <net.Socket>
新しいソケットオブジェクトを作成します。
新しく作成されたソケットは、TCP ソケットまたはストリーミング IPC エンドポイントのいずれかになります。これは、connect() で接続するものによって異なります。
イベント: 'close'
追加: v0.1.90
hadError<boolean> ソケットが伝送エラーを起こした場合true。
ソケットが完全に閉じられたときに一度だけ発生します。引数 hadError は、ソケットが伝送エラーによって閉じられたかどうかを示すブール値です。
イベント: 'connect'
追加: v0.1.90
ソケット接続が正常に確立されたときに発生します。net.createConnection() を参照してください。
イベント: 'connectionAttempt'
追加: v21.6.0, v20.12.0
ip<string> ソケットが接続を試みている IP アドレス。port<number> ソケットが接続を試みているポート。family<number> IP のファミリー。IPv6 の場合は6、IPv4 の場合は4になります。
新しい接続試行が開始されたときに発生します。これは、socket.connect(options) でファミリーの自動選択アルゴリズムが有効になっている場合、複数回発生する可能性があります。
イベント: 'connectionAttemptFailed'
追加: v21.6.0, v20.12.0
ip<string> ソケットが接続を試みた IP アドレス。port<number> ソケットが接続を試みたポート。family<number> IP のファミリー。IPv6 の場合は6、IPv4 の場合は4になります。error<Error> 失敗に関連付けられたエラー。
接続試行が失敗したときに発生します。これは、socket.connect(options) でファミリーの自動選択アルゴリズムが有効になっている場合、複数回発生する可能性があります。
イベント: 'connectionAttemptTimeout'
追加: v21.6.0, v20.12.0
ip<string> ソケットが接続を試みたIPアドレス。port<number> ソケットが接続を試みたポート。family<number> IPアドレスのファミリー。IPv6の場合は6、IPv4の場合は4になります。
接続試行がタイムアウトした場合に発生します。これは、socket.connect(options)でファミリーの自動選択アルゴリズムが有効になっている場合にのみ発生します(複数回発生する可能性があります)。
イベント: 'data'
追加: v0.1.90
データを受信したときに発生します。引数 data は Buffer または String になります。データのエンコーディングは、socket.setEncoding() によって設定されます。
Socket が 'data' イベントを発生させるときにリスナーがない場合、データは失われます。
イベント: 'drain'
追加: v0.1.90
書き込みバッファーが空になったときに発生します。アップロードを調整するために使用できます。
参考: socket.write() の戻り値。
イベント: 'end'
追加: v0.1.90
ソケットの相手側が送信の終了を通知したときに発生し、ソケットの読み取り可能な側を終了させます。
デフォルトでは(allowHalfOpen が false)、ソケットは送信終了パケットを返送し、保留中の書き込みキューを書き出した後、ファイル記述子を破棄します。ただし、allowHalfOpen が true に設定されている場合、ソケットは自動的に書き込み可能な側を end() しないため、ユーザーは任意の量のデータを書き込むことができます。ユーザーは接続を閉じるために(つまり、FINパケットを返送するために)明示的に end() を呼び出す必要があります。
イベント: 'error'
追加: v0.1.90
エラーが発生したときに発生します。このイベントの直後に 'close' イベントが呼び出されます。
イベント: 'lookup'
[履歴]
| バージョン | 変更点 |
|---|---|
| v5.10.0 | host パラメーターがサポートされるようになりました。 |
| v0.11.3 | 追加: v0.11.3 |
ホスト名を解決した後、接続する前に発生します。Unixソケットには適用されません。
err<Error> | <null> エラーオブジェクト。dns.lookup()を参照してください。address<string> IPアドレス。family<number> | <null> アドレスタイプ。dns.lookup()を参照してください。host<string> ホスト名。
イベント: 'ready'
追加: v9.11.0
ソケットが使用できる状態になったときに発生します。
'connect' の直後にトリガーされます。
イベント: 'timeout'
追加: v0.1.90
ソケットが非アクティブのためにタイムアウトした場合に発生します。これは、ソケットがアイドル状態になったことを通知するためだけのものです。ユーザーは手動で接続を閉じる必要があります。
参照: socket.setTimeout()。
socket.address()
[履歴]
| バージョン | 変更点 |
|---|---|
| v18.4.0 | family プロパティが、数値ではなく文字列を返すようになりました。 |
| v18.0.0 | family プロパティが、文字列ではなく数値を返すようになりました。 |
| v0.1.90 | 追加: v0.1.90 |
- 戻り値: <Object>
オペレーティングシステムによって報告された、ソケットのバインドされた address、アドレスの family 名、および port を返します: { port: 12346, family: 'IPv4', address: '127.0.0.1' }
socket.autoSelectFamilyAttemptedAddresses
追加: v19.4.0, v18.18.0
このプロパティは、socket.connect(options) で family autoselection アルゴリズムが有効になっている場合にのみ存在し、試行されたアドレスの配列です。
各アドレスは $IP:$PORT の形式の文字列です。接続が成功した場合、最後のアドレスはソケットが現在接続されているアドレスです。
socket.bufferSize
追加: v0.3.8
非推奨: v14.6.0 以降
[安定版: 0 - 非推奨]
安定版: 0 安定性: 0 - 非推奨: 代わりに writable.writableLength を使用してください。
このプロパティは、書き込みのためにバッファリングされた文字数を示します。バッファには、エンコード後の長さがまだ不明な文字列が含まれている場合があります。したがって、この数値はバッファ内のバイト数の概算にすぎません。
net.Socket には socket.write() が常に動作するという特性があります。これは、ユーザーがすばやく起動して実行できるようにするためです。コンピュータは、ソケットに書き込まれるデータの量に常に追いつくことができるとは限りません。ネットワーク接続が遅すぎるだけかもしれません。Node.js は、ソケットに書き込まれたデータを内部的にキューに入れ、可能になったらネットワーク経由で送信します。
この内部バッファリングの結果として、メモリが増加する可能性があります。bufferSize が大きい、または増え続けている場合は、socket.pause() と socket.resume() を使用して、プログラムのデータフローを「スロットル」することを試みる必要があります。
socket.bytesRead
追加: v0.5.3
受信したバイト数。
socket.bytesWritten
Added in: v0.5.3
送信されたバイト数。
socket.connect()
与えられたソケット上で接続を開始します。
利用可能なシグネチャ:
socket.connect(options[, connectListener])- IPC 接続の場合:
socket.connect(path[, connectListener]) - TCP 接続の場合:
socket.connect(port[, host][, connectListener]) - 戻り値: <net.Socket> ソケット自体。
この関数は非同期です。接続が確立されると、'connect' イベントが発行されます。接続に問題がある場合、'connect' イベントの代わりに、エラーが 'error' リスナーに渡され、'error' イベントが発行されます。最後のパラメーター connectListener が指定されている場合、'connect' イベントのリスナーとして一度だけ追加されます。
この関数は、'close' が発行された後、ソケットを再接続する場合にのみ使用する必要があります。そうでない場合、未定義の動作につながる可能性があります。
socket.connect(options[, connectListener])
[履歴]
| バージョン | 変更点 |
|---|---|
| v19.4.0 | autoSelectFamily オプションのデフォルト値は、setDefaultAutoSelectFamily またはコマンドラインオプション --enable-network-family-autoselection を使用して実行時に変更できます。 |
| v20.0.0, v18.18.0 | autoSelectFamily オプションのデフォルト値が true になりました。--enable-network-family-autoselection CLI フラグの名前が --network-family-autoselection に変更されました。古い名前はエイリアスになりましたが、推奨されません。 |
| v19.3.0, v18.13.0 | autoSelectFamily オプションが追加されました。 |
| v17.7.0, v16.15.0 | noDelay、keepAlive、および keepAliveInitialDelay オプションがサポートされるようになりました。 |
| v6.0.0 | hints オプションは、すべての場合においてデフォルトで 0 になりました。以前は、family オプションがない場合、デフォルトで `dns.ADDRCONFIG |
| v5.11.0 | hints オプションがサポートされるようになりました。 |
| v0.1.90 | Added in: v0.1.90 |
options<Object>connectListener<Function>socket.connect()メソッドの共通のパラメーター。'connect'イベントのリスナーとして一度だけ追加されます。- 戻り値: <net.Socket> ソケット自体。
与えられたソケット上で接続を開始します。通常、このメソッドは不要です。ソケットは net.createConnection() で作成およびオープンする必要があります。カスタムソケットを実装する場合にのみこれを使用してください。
TCP 接続の場合、利用可能な options は次のとおりです。
autoSelectFamily<boolean>:trueに設定すると、RFC 8305 のセクション 5 を緩やかに実装するファミリー自動検出アルゴリズムが有効になります。lookup に渡されるallオプションはtrueに設定され、ソケットは接続が確立されるまで、取得したすべての IPv6 および IPv4 アドレスに順番に接続を試みます。最初に返された AAAA アドレスが最初に試され、次に最初に返された A アドレス、次に 2 番目に返された AAAA アドレスというように試行されます。各接続試行 (最後の試行を除く) には、autoSelectFamilyAttemptTimeoutオプションで指定された時間が与えられ、タイムアウトして次のアドレスを試行します。familyオプションが0でない場合、またはlocalAddressが設定されている場合は無視されます。少なくとも 1 つの接続が成功した場合、接続エラーは発行されません。すべての接続試行が失敗した場合、すべての失敗した試行を含む単一のAggregateErrorが発行されます。デフォルト:net.getDefaultAutoSelectFamily()。autoSelectFamilyAttemptTimeout<number>:autoSelectFamilyオプションを使用する場合に、次のアドレスを試行する前に、接続試行が完了するのを待つ時間 (ミリ秒単位)。10未満の正の整数に設定すると、代わりに値10が使用されます。デフォルト:net.getDefaultAutoSelectFamilyAttemptTimeout()。family<number>: IP スタックのバージョン。4、6、または0である必要があります。値0は、IPv4 と IPv6 の両方のアドレスが許可されることを示します。デフォルト:0。hints<number> オプションのdns.lookup()ヒント。host<string> ソケットが接続するホスト。デフォルト:'localhost'。keepAlive<boolean>trueに設定すると、接続が確立された直後にソケットでキープアライブ機能が有効になります。これはsocket.setKeepAlive()で行われることと同様です。デフォルト:false。keepAliveInitialDelay<number> 正の数に設定すると、アイドル状態のソケットで最初のキープアライブプローブが送信されるまでの初期遅延を設定します。デフォルト:0。localAddress<string> ソケットが接続するローカルアドレス。localPort<number> ソケットが接続するローカルポート。lookup<Function> カスタムルックアップ関数。デフォルト:dns.lookup()。noDelay<boolean>trueに設定すると、ソケットが確立された直後に Nagle アルゴリズムの使用が無効になります。デフォルト:false。port<number> 必須。ソケットが接続するポート。blockList<net.BlockList>blockListは、特定の IP アドレス、IP 範囲、または IP サブネットへのアウトバウンドアクセスを無効にするために使用できます。
IPC 接続の場合、利用可能な options は次のとおりです。
path<string> 必須。クライアントが接続するパス。IPC 接続のパスの識別 を参照してください。指定された場合、上記の TCP 固有のオプションは無視されます。
socket.connect(path[, connectListener])
path<string> クライアントが接続するパス。 IPC接続のパスの識別 を参照してください。connectListener<Function>socket.connect()メソッドの共通の引数。'connect'イベントのリスナーとして一度だけ追加されます。- 戻り値: <net.Socket> ソケット自体。
指定されたソケットで IPC 接続を開始します。
options として { path: path } を指定して呼び出された socket.connect(options[, connectListener]) のエイリアス。
socket.connect(port[, host][, connectListener])
Added in: v0.1.90
port<number> クライアントが接続するポート。host<string> クライアントが接続するホスト。connectListener<Function>socket.connect()メソッドの共通の引数。'connect'イベントのリスナーとして一度だけ追加されます。- 戻り値: <net.Socket> ソケット自体。
指定されたソケットで TCP 接続を開始します。
options として {port: port, host: host} を指定して呼び出された socket.connect(options[, connectListener]) のエイリアス。
socket.connecting
Added in: v6.1.0
true の場合、socket.connect(options[, connectListener]) が呼び出され、まだ完了していません。 ソケットが接続されるまで true のままで、その後 false に設定され、'connect' イベントが発生します。 socket.connect(options[, connectListener]) コールバックは 'connect' イベントのリスナーであることに注意してください。
socket.destroy([error])
Added in: v0.1.90
error<Object>- 戻り値: <net.Socket>
このソケットでこれ以上 I/O アクティビティが発生しないようにします。ストリームを破棄し、接続を閉じます。
詳細については、writable.destroy() を参照してください。
socket.destroyed
- <boolean> 接続が破棄されたかどうかを示します。接続が破棄されると、それ以上データ転送はできません。
詳細については、writable.destroyed を参照してください。
socket.destroySoon()
Added in: v0.3.4
すべてのデータが書き込まれた後にソケットを破棄します。'finish' イベントが既に発生している場合、ソケットは直ちに破棄されます。ソケットがまだ書き込み可能な場合は、暗黙的に socket.end() を呼び出します。
socket.end([data[, encoding]][, callback])
Added in: v0.1.90
data<string> | <Buffer> | <Uint8Array>encoding<string> data がstringの場合のみ使用されます。デフォルト:'utf8'。callback<Function> ソケットが終了したときのオプションのコールバック。- 戻り値: <net.Socket> ソケット自体。
ソケットを半分閉じます。つまり、FIN パケットを送信します。サーバーがまだデータを送信する可能性があります。
詳細については、writable.end() を参照してください。
socket.localAddress
Added in: v0.9.6
リモートクライアントが接続しているローカル IP アドレスの文字列表現。たとえば、'0.0.0.0' でリッスンしているサーバーで、クライアントが '192.168.1.1' で接続している場合、socket.localAddress の値は '192.168.1.1' になります。
socket.localPort
Added in: v0.9.6
ローカルポートを数値で表したものです。例えば、80 や 21 などです。
socket.localFamily
Added in: v18.8.0, v16.18.0
ローカルIPファミリーを文字列で表したものです。 'IPv4' または 'IPv6'。
socket.pause()
- 戻り値: <net.Socket> ソケット自体。
データの読み込みを一時停止します。つまり、'data' イベントは発行されません。アップロードを抑制するのに役立ちます。
socket.pending
Added in: v11.2.0, v10.16.0
.connect() がまだ呼び出されていないか、接続処理中の場合 (see socket.connecting)、ソケットがまだ接続されていない場合、これは true です。
socket.ref()
Added in: v0.9.1
- 戻り値: <net.Socket> ソケット自体。
unref() の反対で、以前に unref されたソケットで ref() を呼び出しても、それが唯一のソケットの場合、プログラムは終了しません (デフォルトの動作)。ソケットが ref されている場合、ref を再度呼び出しても効果はありません。
socket.remoteAddress
Added in: v0.5.10
リモート IP アドレスを文字列で表したものです。たとえば、'74.125.127.100' や '2001:4860:a005::68' などです。ソケットが破棄された場合 (クライアントが切断された場合など)、値は undefined になることがあります。
socket.remoteFamily
Added in: v0.11.14
リモート IP ファミリーを文字列で表したものです。 'IPv4' または 'IPv6'。ソケットが破棄された場合 (クライアントが切断された場合など)、値は undefined になることがあります。
socket.remotePort
Added in: v0.5.10
リモートポートの数値表現。 たとえば、80 や 21 です。 ソケットが破棄された場合(クライアントが切断された場合など)、値は undefined になる可能性があります。
socket.resetAndDestroy()
Added in: v18.3.0, v16.17.0
- 戻り値: <net.Socket>
RST パケットを送信して TCP 接続を閉じ、ストリームを破棄します。 この TCP ソケットが接続ステータスの場合、RST パケットを送信し、接続されるとすぐにこの TCP ソケットを破棄します。 そうでない場合、ERR_SOCKET_CLOSED エラーで socket.destroy を呼び出します。 これが TCP ソケットでない場合(パイプなど)、このメソッドを呼び出すと、すぐに ERR_INVALID_HANDLE_TYPE エラーがスローされます。
socket.resume()
- 戻り値: <net.Socket> ソケット自体。
socket.pause() の呼び出し後に読み取りを再開します。
socket.setEncoding([encoding])
Added in: v0.1.90
encoding<string>- 戻り値: <net.Socket> ソケット自体。
ソケットのエンコーディングを Readable Stream として設定します。 詳細については、readable.setEncoding() を参照してください。
socket.setKeepAlive([enable][, initialDelay])
[履歴]
| バージョン | 変更 |
|---|---|
| v13.12.0, v12.17.0 | TCP_KEEPCNT および TCP_KEEPINTVL ソケットオプションの新しいデフォルトが追加されました。 |
| v0.1.92 | Added in: v0.1.92 |
enable<boolean> デフォルト:falseinitialDelay<number> デフォルト:0- 戻り値: <net.Socket> ソケット自体。
キープアライブ機能を有効/無効にし、オプションでアイドルソケットで最初のキープアライブプローブが送信されるまでの初期遅延を設定します。
initialDelay(ミリ秒単位)を設定して、最後に受信したデータパケットと最初のキープアライブプローブの間の遅延を設定します。 initialDelay に 0 を設定すると、値はデフォルト(または以前の)設定から変更されません。
キープアライブ機能を有効にすると、次のソケットオプションが設定されます。
SO_KEEPALIVE=1TCP_KEEPIDLE=initialDelayTCP_KEEPCNT=10TCP_KEEPINTVL=1
socket.setNoDelay([noDelay])
Added in: v0.1.90
noDelay<boolean> デフォルト:true- 戻り値: <net.Socket> ソケット自体。
Nagleアルゴリズムの使用を有効/無効にします。
TCP接続が作成されると、Nagleアルゴリズムが有効になります。
Nagleアルゴリズムは、データがネットワーク経由で送信される前に遅延させます。これは、レイテンシを犠牲にしてスループットを最適化しようとします。
noDelayにtrueを渡すか、引数を渡さないと、ソケットのNagleアルゴリズムが無効になります。noDelayにfalseを渡すと、Nagleアルゴリズムが有効になります。
socket.setTimeout(timeout[, callback])
[履歴]
| バージョン | 変更点 |
|---|---|
| v18.0.0 | callback引数に無効なコールバックを渡すと、ERR_INVALID_CALLBACKの代わりにERR_INVALID_ARG_TYPEがスローされるようになりました。 |
| v0.1.90 | Added in: v0.1.90 |
timeout<number>callback<Function>- 戻り値: <net.Socket> ソケット自体。
ソケットでtimeoutミリ秒の非アクティブ状態が続いた後、ソケットをタイムアウトするように設定します。デフォルトでは、net.Socketはタイムアウトを持ちません。
アイドルタイムアウトがトリガーされると、ソケットは'timeout'イベントを受信しますが、接続は切断されません。ユーザーは、接続を終了するために、socket.end()またはsocket.destroy()を手動で呼び出す必要があります。
socket.setTimeout(3000);
socket.on('timeout', () => {
console.log('ソケットタイムアウト');
socket.end();
});timeoutが0の場合、既存のアイドルタイムアウトは無効になります。
オプションのcallbackパラメーターは、'timeout'イベントの1回限りのリスナーとして追加されます。
socket.timeout
Added in: v10.7.0
socket.setTimeout() で設定されたソケットのタイムアウトをミリ秒単位で表します。タイムアウトが設定されていない場合は undefined になります。
socket.unref()
Added in: v0.9.1
- 戻り値: <net.Socket> ソケット自体。
ソケットで unref() を呼び出すと、イベントシステム内でこれが唯一のアクティブなソケットである場合に、プログラムは終了できます。ソケットがすでに unref されている場合、再度 unref() を呼び出しても効果はありません。
socket.write(data[, encoding][, callback])
Added in: v0.1.90
data<string> | <Buffer> | <Uint8Array>encoding<string>dataがstringの場合のみ使用されます。デフォルト:utf8。callback<Function>- 戻り値: <boolean>
ソケットにデータを送信します。2番目の引数は、文字列の場合のエンコーディングを指定します。デフォルトはUTF8エンコーディングです。
データ全体がカーネルバッファに正常にフラッシュされた場合は true を返します。データの一部または全部がユーザーメモリにキューイングされた場合は false を返します。バッファが再び空になったときに 'drain' が発行されます。
オプションの callback パラメータは、データが最終的に書き出されたときに実行されます。これはすぐには行われない場合があります。
詳細については、Writable ストリームの write() メソッドを参照してください。
socket.readyState
Added in: v0.5.0
このプロパティは、接続の状態を文字列として表します。
- ストリームが接続中の場合、
socket.readyStateはopeningです。 - ストリームが読み取り可能かつ書き込み可能な場合、
openです。 - ストリームが読み取り可能で書き込み可能でない場合、
readOnlyです。 - ストリームが読み取り可能でなく書き込み可能な場合、
writeOnlyです。
net.connect()
net.createConnection() のエイリアス。
可能なシグネチャ:
net.connect(options[, connectListener])- IPC 接続の場合、
net.connect(path[, connectListener])。 - TCP 接続の場合、
net.connect(port[, host][, connectListener])。
net.connect(options[, connectListener])
Added in: v0.7.0
options<Object>connectListener<Function>- 戻り値: <net.Socket>
net.createConnection(options[, connectListener]) のエイリアス。
net.connect(path[, connectListener])
Added in: v0.1.90
path<string>connectListener<Function>- 戻り値: <net.Socket>
net.createConnection(path[, connectListener]) のエイリアス。
net.connect(port[, host][, connectListener])
Added in: v0.1.90
port<number>host<string>connectListener<Function>- 戻り値: <net.Socket>
net.createConnection(port[, host][, connectListener]) のエイリアス。
net.createConnection()
新しいnet.Socketを作成し、socket.connect()で接続をすぐに開始し、接続を開始するnet.Socketを返すファクトリ関数です。
接続が確立されると、'connect'イベントが返されたソケットで発生します。最後のパラメータconnectListenerが提供された場合、'connect'イベントのリスナーとして一度追加されます。
使用可能なシグネチャ:
net.createConnection(options[, connectListener])- IPC接続の場合、
net.createConnection(path[, connectListener])。 - TCP接続の場合、
net.createConnection(port[, host][, connectListener])。
net.connect()関数は、この関数のエイリアスです。
net.createConnection(options[, connectListener])
追加: v0.1.90
options<Object> 必須。new net.Socket([options])の呼び出しとsocket.connect(options[, connectListener])メソッドの両方に渡されます。connectListener<Function>net.createConnection()関数の共通パラメータ。提供された場合、返されたソケットの'connect'イベントのリスナーとして一度追加されます。- 戻り値: <net.Socket> 接続を開始するために使用される、新しく作成されたソケット。
利用可能なオプションについては、new net.Socket([options])およびsocket.connect(options[, connectListener])を参照してください。
追加のオプション:
timeout<number> 設定されている場合、ソケットの作成後、接続を開始する前に、socket.setTimeout(timeout)を呼び出すために使用されます。
net.createServer()セクションで説明されているエコーサーバーのクライアントの例を次に示します。
import net from 'node:net';
const client = net.createConnection({ port: 8124 }, () => {
// 'connect' リスナー。
console.log('サーバーに接続しました!');
client.write('world!\r\n');
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
client.on('end', () => {
console.log('サーバーから切断されました');
});const net = require('node:net');
const client = net.createConnection({ port: 8124 }, () => {
// 'connect' リスナー。
console.log('サーバーに接続しました!');
client.write('world!\r\n');
});
client.on('data', (data) => {
console.log(data.toString());
client.end();
});
client.on('end', () => {
console.log('サーバーから切断されました');
});ソケット/tmp/echo.sockに接続するには:
const client = net.createConnection({ path: '/tmp/echo.sock' });portおよびonreadオプションを使用するクライアントの例を次に示します。この場合、onreadオプションはnew net.Socket([options])を呼び出すためだけに使用され、portオプションはsocket.connect(options[, connectListener])を呼び出すために使用されます。
import net from 'node:net';
import { Buffer } from 'node:buffer';
net.createConnection({
port: 8124,
onread: {
// ソケットからのすべての読み取りに対して4KiBのバッファーを再利用します。
buffer: Buffer.alloc(4 * 1024),
callback: function(nread, buf) {
// 受信したデータは、0から`nread`までの`buf`で使用できます。
console.log(buf.toString('utf8', 0, nread));
},
},
});const net = require('node:net');
net.createConnection({
port: 8124,
onread: {
// ソケットからのすべての読み取りに対して4KiBのバッファーを再利用します。
buffer: Buffer.alloc(4 * 1024),
callback: function(nread, buf) {
// 受信したデータは、0から`nread`までの`buf`で使用できます。
console.log(buf.toString('utf8', 0, nread));
},
},
});net.createConnection(path[, connectListener])
Added in: v0.1.90
path<string> ソケットが接続するパス。socket.connect(path[, connectListener])に渡されます。IPC接続のパスの識別を参照してください。connectListener<Function>net.createConnection()関数の共通パラメータで、開始ソケットの'connect'イベントの"once"リスナーです。socket.connect(path[, connectListener])に渡されます。- 戻り値: <net.Socket> 接続を開始するために使用される新しく作成されたソケット。
IPC接続を開始します。
この関数は、すべてのオプションがデフォルトに設定された新しいnet.Socketを作成し、socket.connect(path[, connectListener])との接続を直ちに開始し、接続を開始するnet.Socketを返します。
net.createConnection(port[, host][, connectListener])
Added in: v0.1.90
port<number> ソケットが接続するポート。socket.connect(port[, host][, connectListener])に渡されます。host<string> ソケットが接続するホスト。socket.connect(port[, host][, connectListener])に渡されます。 デフォルト:'localhost'。connectListener<Function>net.createConnection()関数の共通パラメータで、開始ソケットの'connect'イベントの"once"リスナーです。socket.connect(port[, host][, connectListener])に渡されます。- 戻り値: <net.Socket> 接続を開始するために使用される新しく作成されたソケット。
TCP接続を開始します。
この関数は、すべてのオプションがデフォルトに設定された新しいnet.Socketを作成し、socket.connect(port[, host][, connectListener])との接続を直ちに開始し、接続を開始するnet.Socketを返します。
net.createServer([options][, connectionListener])
[履歴]
| バージョン | 変更点 |
|---|---|
| v20.1.0, v18.17.0 | highWaterMark オプションがサポートされるようになりました。 |
| v17.7.0, v16.15.0 | noDelay, keepAlive, および keepAliveInitialDelay オプションがサポートされるようになりました。 |
| v0.5.0 | 追加: v0.5.0 |
options<Object>allowHalfOpen<boolean>falseに設定した場合、ソケットは読み取り側が終了すると、書き込み側を自動的に終了します。 デフォルト:false。highWaterMark<number> オプションで、すべてのnet.SocketのreadableHighWaterMarkおよびwritableHighWaterMarkをオーバーライドします。 デフォルト:stream.getDefaultHighWaterMark()を参照してください。keepAlive<boolean>trueに設定した場合、socket.setKeepAlive()で行われるのと同様に、新しい受信接続を受信した直後に、ソケットで keep-alive 機能を有効にします。 デフォルト:false。keepAliveInitialDelay<number> 正の数に設定した場合、アイドル状態のソケットで最初の keepalive プローブが送信されるまでの初期遅延を設定します。 デフォルト:0。noDelay<boolean>trueに設定した場合、新しい受信接続を受信した直後に、Nagle アルゴリズムの使用を無効にします。 デフォルト:false。pauseOnConnect<boolean> 着信接続でソケットを一時停止するかどうかを示します。 デフォルト:false。blockList<net.BlockList>blockListは、特定の IP アドレス、IP 範囲、または IP サブネットへのインバウンドアクセスを無効にするために使用できます。 サーバーがリバースプロキシ、NAT などの背後にある場合、ブロックリストに対してチェックされるアドレスはプロキシのアドレス、または NAT によって指定されたアドレスであるため、これは機能しません。
connectionListener<Function>'connection'イベントのリスナーとして自動的に設定されます。戻り値: <net.Server>
新しい TCP または IPC サーバーを作成します。
allowHalfOpen が true に設定されている場合、ソケットの相手側が送信の終了を通知すると、サーバーは socket.end() が明示的に呼び出された場合にのみ送信の終了を返送します。 たとえば、TCP のコンテキストでは、FIN パケットが受信されると、socket.end() が明示的に呼び出された場合にのみ FIN パケットが返送されます。 それまでは、接続はハーフクローズ(読み取り不可だが書き込み可能)です。 詳細については、'end' イベントと RFC 1122 (セクション 4.2.2.13) を参照してください。
pauseOnConnect が true に設定されている場合、各着信接続に関連付けられたソケットは一時停止され、そのハンドルからデータは読み取られません。 これにより、データが元のプロセスによって読み取られることなく、プロセス間で接続を渡すことができます。 一時停止されたソケットからのデータの読み取りを開始するには、socket.resume() を呼び出します。
サーバーは、TCP サーバーまたは IPC サーバーになる可能性があります。これは、listen() 先によって異なります。
ポート 8124 で接続をリッスンする TCP エコーサーバーの例を次に示します。
import net from 'node:net';
const server = net.createServer((c) => {
// 'connection' リスナー。
console.log('client connected');
c.on('end', () => {
console.log('client disconnected');
});
c.write('hello\r\n');
c.pipe(c);
});
server.on('error', (err) => {
throw err;
});
server.listen(8124, () => {
console.log('server bound');
});const net = require('node:net');
const server = net.createServer((c) => {
// 'connection' リスナー。
console.log('client connected');
c.on('end', () => {
console.log('client disconnected');
});
c.write('hello\r\n');
c.pipe(c);
});
server.on('error', (err) => {
throw err;
});
server.listen(8124, () => {
console.log('server bound');
});telnet を使用してこれをテストします。
telnet localhost 8124ソケット /tmp/echo.sock でリッスンするには:
server.listen('/tmp/echo.sock', () => {
console.log('server bound');
});nc を使用して Unix ドメインソケットサーバーに接続します。
nc -U /tmp/echo.socknet.getDefaultAutoSelectFamily()
Added in: v19.4.0
socket.connect(options) の autoSelectFamily オプションの現在のデフォルト値を取得します。初期デフォルト値は true です。ただし、コマンドラインオプション --no-network-family-autoselection が指定されている場合は除きます。
- 戻り値: <boolean>
autoSelectFamilyオプションの現在のデフォルト値。
net.setDefaultAutoSelectFamily(value)
Added in: v19.4.0
socket.connect(options) の autoSelectFamily オプションのデフォルト値を設定します。
value<boolean> 新しいデフォルト値。初期デフォルト値はtrueです。ただし、コマンドラインオプション--no-network-family-autoselectionが指定されている場合は除きます。
net.getDefaultAutoSelectFamilyAttemptTimeout()
Added in: v19.8.0, v18.18.0
socket.connect(options) の autoSelectFamilyAttemptTimeout オプションの現在のデフォルト値を取得します。初期デフォルト値は 250、またはコマンドラインオプション --network-family-autoselection-attempt-timeout で指定された値です。
- 戻り値: <number>
autoSelectFamilyAttemptTimeoutオプションの現在のデフォルト値。
net.setDefaultAutoSelectFamilyAttemptTimeout(value)
Added in: v19.8.0, v18.18.0
socket.connect(options) の autoSelectFamilyAttemptTimeout オプションのデフォルト値を設定します。
value<number> 新しいデフォルト値。正の数でなければなりません。数値が10未満の場合、代わりに値10が使用されます。初期デフォルト値は250、またはコマンドラインオプション--network-family-autoselection-attempt-timeoutで指定された値です。
net.isIP(input)
Added in: v0.3.0
input が IPv6 アドレスの場合、6 を返します。input が先頭にゼロのない ドット10進表記 の IPv4 アドレスの場合、4 を返します。それ以外の場合は、0 を返します。
net.isIP('::1'); // 6 を返す
net.isIP('127.0.0.1'); // 4 を返す
net.isIP('127.000.000.001'); // 0 を返す
net.isIP('127.0.0.1/24'); // 0 を返す
net.isIP('fhqwhgads'); // 0 を返すnet.isIPv4(input)
Added in: v0.3.0
input が先頭にゼロのない ドット10進表記 の IPv4 アドレスの場合、true を返します。それ以外の場合は、false を返します。
net.isIPv4('127.0.0.1'); // true を返す
net.isIPv4('127.000.000.001'); // false を返す
net.isIPv4('127.0.0.1/24'); // false を返す
net.isIPv4('fhqwhgads'); // false を返すnet.isIPv6(input)
Added in: v0.3.0
input が IPv6 アドレスの場合、true を返します。それ以外の場合は、false を返します。
net.isIPv6('::1'); // true を返す
net.isIPv6('fhqwhgads'); // false を返す