PHP如何實現(xiàn)簡單的Socket
首先使用PHP制作的Socket服務端,其主要是設置Socket的IP地址及端口號;然后監(jiān)聽端口,如果有客戶端連接的話,則接收連接請求和數(shù)據(jù),最后處理數(shù)據(jù)并且返回數(shù)據(jù)即可。
示例代碼:
<?php //確保在連接客戶端時不會超時 set_time_limit(0); //設置IP和端口號 $address = "127.0.0.1"; $port = 2048; //調(diào)試的時候,可以多換端口來測試程序! /** * 創(chuàng)建一個SOCKET * AF_INET=是ipv4 如果用ipv6,則參數(shù)為 AF_INET6 * SOCK_STREAM為socket的tcp類型,如果是UDP則使用SOCK_DGRAM */ $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() 失敗的原因是:" . socket_strerror(socket_last_error()) . "/n"); //阻塞模式 socket_set_block($sock) or die("socket_set_block() 失敗的原因是:" . socket_strerror(socket_last_error()) . "/n"); //綁定到socket端口 $result = socket_bind($sock, $address, $port) or die("socket_bind() 失敗的原因是:" . socket_strerror(socket_last_error()) . "/n"); //開始監(jiān)聽 $result = socket_listen($sock, 4) or die("socket_listen() 失敗的原因是:" . socket_strerror(socket_last_error()) . "/n"); echo "OKnBinding the socket on $address:$port ... "; echo "OKnNow ready to accept connections.nListening on the socket ... n"; do { // never stop the daemon //它接收連接請求并調(diào)用一個子連接Socket來處理客戶端和服務器間的信息 $msgsock = socket_accept($sock) or die("socket_accept() failed: reason: " . socket_strerror(socket_last_error()) . "/n"); //讀取客戶端數(shù)據(jù) echo "Read client data n"; //socket_read函數(shù)會一直讀取客戶端數(shù)據(jù),直到遇見n,t或者