PHP如何實現簡單的Socket
首先使用PHP製作的Socket伺服器端,其主要是設定Socket的IP地址及埠號;然後監聽埠,如果有用戶端連線的話,則接收連線請求和資料,最後處理資料並且返回資料即可。
範例程式碼:
<?php //確保在連線用戶端時不會超時 set_time_limit(0); //設定IP和埠號 $address = "127.0.0.1"; $port = 2048; //偵錯的時候,可以多換埠來測試程式! /** * 建立一個SOCKET * AF_INET=是ipv4 如果用ipv6,則引數為 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"); //開始監聽 $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 //它接收連線請求並呼叫一個子連線Socket來處理用戶端和伺服器間的資訊 $msgsock = socket_accept($sock) or die("socket_accept() failed: reason: " . socket_strerror(socket_last_error()) . "/n"); //讀取用戶端資料 echo "Read client data n"; //socket_read函數會一直讀取用戶端資料,直到遇見n,t或者字元.PHP指令碼把這寫字元看做是輸入的結束符. $buf = socket_read($msgsock, 8192); echo "Received msg: $buf n"; //資料傳送 向用戶端寫入返回結果 $msg = "welcome n"; socket_write($msgsock, $msg, strlen($msg)) or die("socket_write() failed: reason: " . socket_strerror(socket_last_error()) ."/n"); //一旦輸出被返回到用戶端,父/子socket都應通過socket_close($msgsock)函數來終止 socket_close($msgsock); } while (true); socket_close($sock);以上就是PHP如何實現簡單的Socket的詳細內容,更多請關注TW511.COM其它相關文章!