socket_bind
socket_bind — ソケットに名前をバインドする
説明
bool socket_bind ( resource socket, string address [, int port] )address で指定した名前を socket で指定したソケットにバインドします。 これは、socket_connect() あるいは socket_listen() を使用して接続が確立される前に 行われます。
パラメータ
- socket
-
socket_create() で作成した有効なソケット記述子。
- address
-
ソケットの種類が AF_INET の場合、
address はドットで 4 つに区切られた表記
(例: 127.0.0.1)の IP アドレス。
ソケットの種類が AF_UNIX の場合、 address は Unix ドメインソケット (例: /tmp/my.sock)。 - port(オプション)
-
パラメータ port は
AF_INET ソケットに接続する場合にのみ使用され、
接続するリモートホストのポートを指定します。
返り値
成功した場合に TRUE を、失敗した場合に FALSE を返します。エラーコードは socket_last_error() により取得できます。 このコードを socket_strerror() に渡すことにより、 エラー内容を表すテキストを得ることができます。
例
例 2149. socket_bind() を使用してソースアドレスを指定する
<?php
// 新しいソケットを作成する
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// コンピュータが所有する IP アドレスリストの例
$sourceips['kevin'] = '127.0.0.1';
$sourceips['madcoder'] = '127.0.0.2';
// ソースアドレスをバインドする
socket_bind($sock, $sourceips['madcoder']);
// 接続先アドレスと接続する
socket_connect($sock, '127.0.0.1', 80);
// 書き込む
$request = 'GET / HTTP/1.1' . "\r\n" .
'Host: example.com' . "\r\n\r\n";
socket_write($sock, $request);
// 閉じる
socket_close($sock);
?>
注意
注意: この関数は、 socket_connect() の前に実行されている必要があります。注意: Windows 9x/ME 互換性の注意: マシンに属しないアドレスにソケットをバインドしようとした場合、 socket_last_error() は 無効なエラーコードを返すことがあります。
参考
socket_connect() |
socket_listen() |
socket_create() |
socket_last_error() |
socket_strerror() |
Socket.Bind メソッド
アセンブリ: System (system.dll 内)



Bind メソッドは、特定のローカル エンドポイントを使用する必要がある場合に使用してください。Bind を呼び出してからでないと、Listen メソッドを呼び出すことはできません。特定のローカル エンドポイントを使用する必要がない場合は、Connect メソッドを使用する前に、Bind を呼び出す必要はありません。Bind メソッドは、コネクションレスのプロトコルおよびコネクション指向のプロトコルの両方で使用できます。
Bind を呼び出す前に、まず、データ通信を開始するローカル IPEndPoint を作成する必要があります。どのローカル アドレスが割り当てられていてもかまわない場合は、IPAddress.Any をアドレス パラメータとして使用して IPEndPoint を作成します。すると、基になるサービス プロバイダが最も適切なローカル ネットワーク アドレスを割り当てます。複数のネットワーク インターフェイスがある場合は、これを使用することによってアプリケーションを簡素化できることがあります。使用するローカル ポートについても特に指定がない場合は、ポート番号 0 を使用して IPEndPoint を作成します。この場合、サービス プロバイダは 1024 ~ 5000 の範囲で使用できるポート番号を割り当てます。
この方法を使用する場合、LocalEndPoint を呼び出すことによって、既に割り当てられているローカル ネットワーク アドレスとポート番号を知ることができます。コネクション指向のプロトコルを使用している場合、Connect メソッドまたは EndConnect メソッドを呼び出すまで、LocalEndPoint はローカルに割り当てられているネットワーク アドレスを返しません。コネクションレスのプロトコルを使用している場合は、送受信を完了するまでこの情報にアクセスできません。
![]() |
---|
マルチキャスト データグラムを受信するには、マルチキャスト ポート番号を使用して Bind メソッドを呼び出す必要があります。 |

指定したローカル エンドポイントを使用して、Socket をバインドするコード例を次に示します。
Try aSocket.Bind(anEndPoint) Catch e As Exception Console.WriteLine("Winsock error: " & e.ToString()) End Try
try { aSocket.Bind(anEndPoint); } catch (Exception e) { Console.WriteLine("Winsock error: " + e.ToString()); }


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- socket.Bindのページへのリンク