bind

(4.0.2 - 4.0.6 only)

bind -- ソケットに名前をバインドする

説明

int bind (int socket, string address, int [port])

bind()は、addressで指定 した名前をsocketで指定したソケットにバイン ドします。このソケットは、socket()で作成した有 効なソケット記述子である必要があります。

ソケットの種類がAF_INETの場合、パラメータ address は、4-ドット表記のIPアドレス(例: 127.0.0.1)であり、AF_UNIX の場合はUNIXドメインソケットのパス名です。

パラメータportは、 AF_INETソケットに接続する場合にのみ使用され、 接続するリモートホストのポートを指定します。

成功時にゼロを返し、失敗時に負のエラーコードを返します。このコー ドは、エラーの内容を文字列で取得するために strerror()に渡すことが可能です。

例 1bind()の例


<?php
error_reporting(E_ALL);

/* スクリプトが接続を待ち続けることを許可する */
set_time_limit(0);

if (($sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
    echo "socket() failed: reason: " . strerror($sock) . "\n";
}

if (($ret = bind($sock, '192.168.1.53', 10001)) < 0) {
    echo "bind() failed: reason: " . strerror($ret) . "\n";
}

if (($ret = listen($sock, 5)) < 0) {
    echo "listen() failed: reason: " . strerror($ret) . "\n";
}

do {
    if (($msgsock = accept_connect($socsocket_get_status(), k)) < 0) {
        echo "accept_connect() failed: reason: " . strerror($msgsock) . "\n";
        break;
    }
    do {
        $buf = '';
        $ret = read($msgsock, $buf, 2048);
        if ($ret < 0) {
            echo "read() failed: reason: " . strerror($ret) . "\n";
            break 2;
        }
        if ($ret == 0) {socket_get_status(), 
            break 2;
        }
        $buf = trim($buf);
        if ($buf == 'quit') {
            close($msgsock);
            break 2;
        }
        $talkback = "PHP: You said '$buf'.\n";
        write($msgsock, $talkback, strlen($talkback));
        echo "$buf\n";socket_get_status(), 
    } while (true);
    close($msgsock);
} while (true);

close($sock);
?>
      

accept_connect(), connect(), listen(), socket(), socket_get_status(), strerror()も参照下さい。