# socket_bind

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_bind — 给套接字绑定名字

### 说明

socket_bind ( resource `$socket` , string `$address` [, int `$port` = 0 ] ) : bool

绑定 `address` 到 `socket`。 该操作必须是在使用 socket_connect() 或者 socket_listen() 建立一个连接之前。

### 参数

`socket`

  用 socket_create() 创建的一个有效的套接字资源。

`address`

  如果套接字是 `AF_INET` 族，那么 `address` 必须是一个四点分法的 IP 地址（例如 127.0.0.1 ）。

  如果套接字是 `AF_UNIX` 族，那么 `address` 是 Unix 套接字一部分（例如 /tmp/my.sock ）。

`port` （可选）

  参数 `port` 仅仅用于 `AF_INET` 套接字连接的时候，并且指定连接中需要监听的端口号。

### 返回值

成功时返回 `TRUE`， 或者在失败时返回 `FALSE`。

错误代码会传入 socket_last_error() ，如果将此参数传入 socket_strerror() 则可以得到错误的文字说明。

### 范例

Example #1 使用 socket_bind() 来设置套接字资源地址

    <?php
    // Create a new socket
    $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

    // An example list of IP addresses owned by the computer
    $sourceips['kevin']    = '127.0.0.1';
    $sourceips['madcoder'] = '127.0.0.2';

    // Bind the source address
    socket_bind($sock, $sourceips['madcoder']);

    // Connect to destination address
    socket_connect($sock, '127.0.0.1', 80);

    // Write
    $request = 'GET / HTTP/1.1' . "\r\n" .
               'Host: example.com' . "\r\n\r\n";
    socket_write($sock, $request);

    // Close
    socket_close($sock);

    ?>

### 注释

> Note:

> 该函数必须在 socket_connect() 之前使用。

> Note:

> Windows 9x/ME 兼容性注意点: 如果尝试绑定套接字资源到一个错误的地址，而这个地址不是本机的地址，那么 socket_last_error() 可能会返回一个无效的错误代码。

### 参见

- socket_connect() - 开启一个套接字连接
- socket_listen() - Listens for a connection on a socket
- socket_create() - 创建一个套接字（通讯节点）
- socket_last_error() - Returns the last error on the socket
- socket_strerror() - Return a string describing a socket error