建立指定流或數據報套接字 local_socket。:該類型建立由運輸決定的插座的使用標準URL格式指定 運輸://目標。對於Internet域套接字(AF_INET),如TCP和UDP,該目標的一部分remote_socket參數應該由一個主機名或IP地址,後跟一個冒號和一個端口號。對於Unix域套接字,該目標部分應指向文件系統上的套接字文件。 標誌是可被設置爲套接字建立標記的任何組合的位掩碼字段。標誌的默認值爲 STREAM_SERVER_BIND | STREAM_SERVER_LISTEN。php
注: 對於UDP套接字,必須使用STREAM_SERVER_BIND做爲標誌參數。html
此功能僅建立一個套接字,開始接受鏈接使用stream_socket_accept() 。服務器
若是調用失敗,它將返回FALSE,若是可選 的errno和errstr 參數是目前他們將被設置爲代表發生在系統級實際的系統級錯誤 插座() ,bind()的,和 聽()調用。若是返回值 錯誤號爲0和該函數返回FALSE,那就是前發生的錯誤指示bind()的調用。這極可能是因爲在初始化插座的問題。請注意,錯誤號和 errstr參數將始終經過引用傳遞。curl
根據環境的不一樣,Unix域套接字可能沒法使用。可用傳輸列表能夠使用檢索 stream_get_transports() 。見 附錄Ñ爲bulitin傳輸的列表。socket
例子 1. Using TCP server socketstcp
1 <?php 2 $socket = stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr); 3 if (!$socket) { 4 echo "$errstr ($errno)<br />\n"; 5 } else { 6 while ($conn = stream_socket_accept($socket)) { 7 fwrite($conn, 'The local time is ' . date('n/j/Y g:i a') . "\n"); 8 fclose($conn); 9 } 10 fclose($socket); 11 } 12 ?>
下面的例子演示瞭如何做爲,能夠如圖爲例對時間響應查詢的時間服務器在stream_socket_client() 。函數
注: 大多數系統須要root權限以低於1024的端口上建立服務器套接字。url
例子 2.spa
1 <?php 2 $socket = stream_socket_server("udp://127.0.0.1:1113", $errno, $errstr, STREAM_SERVER_BIND); 3 if (!$socket) { 4 die("$errstr ($errno)"); 5 } 6 7 do { 8 $pkt = stream_socket_recvfrom($socket, 1, 0, $peer); 9 echo "$peer\n"; 10 stream_socket_sendto($socket, date("D M j H:i:s Y\r\n"), 0, $peer); 11 } while ($pkt !== false); 12 13 ?>
注: 當指定數字的 IPv6 地址(例如 fe80::1)時必須將 IP 地址放在方括號內。例如 tcp://[fe80::1]:80。code
也參見在stream_socket_client() , stream_set_blocking() , stream_set_timeout() , 與fgets() , fgetss() ,fwrite()將, FCLOSE() ,的feof() ,和捲曲延伸。