本篇文章分享一個簡單的socket示例,用php。實現一個接收輸入字符串,處理并返回這個字符串到客戶端的TCP服務。
產生一個 socket 服務端
- <?php
- /*文件名:socket_server.php*/
- // 設置一些基本的變量
- $host="127.0.0.1";//Socket運行的服務器的IP地址
- $port=1234;//Socket運行的服務器的端口,端口取值為1到65535之間的數字,前提是這個端口未被使用
- // 設置超時時間,這里設置為永不超時,確保PHP在等待客戶端連接時不會超時。
- set_time_limit(0);
- // 創建一個Socket,返回一個Socket句柄
- $socket=socket_create(AF_INET,SOCK_STREAM,0) or die("Could not create socket/n");
- //綁定Socket到指定的地址和端口
- $result=socket_bind($socket,$host,$port) or die("Could not bind to socket/n");
- // 開始監聽外部連接
- $result=socket_listen($socket,3) or die("Could not set up socket listener/n");
- /******到這里,服務器除了等待來自客戶端的連接請求外基本上什么也不做******/
- // 另一個Socket來處理服務端與客戶端的通信
- $spawn=socket_accept($socket) or die("Could not accept incoming connection/n");
- // 讀取客戶端的輸入,當一個連接被建立后,服務器就會等待客戶端發送一些輸入信息,這些信息可以由socket_read()函數來獲得,并把它賦值給PHP的$input變量
- $input=socket_read($spawn,1024) or die("Could not read input/n");
- //socker_read的第二個參數用以指定讀入的字節數,你可以通過它來限制從客戶端獲取數據的大小
- // 下面這不就不解釋了,不知道的自己面壁去
- $input=trim($input);
- //處理客戶端輸入并返回結果,當客戶端發來數據信息后,信息輸出就要靠socket_write()函數來完成
- $output=strrev($input) ."/n";//反轉字符串,這里僅僅是為了更好的區分兩條信息
- socket_write($spawn,$output,strlen($output)) or die("Could not write output/n");
- // 關閉sockets
- socket_close($spawn);
- socket_close($socket);
新聞熱點
疑難解答