PHP 使用Berkley的socket庫來建立它的串連。你可以知道socket只不過是一個資料結構。你使用這個socket資料結構去開始一個用戶端和伺服器之間的會話。這個伺服器是一直在監聽準備產生一個新的會話。當一個用戶端串連伺服器,它就開啟伺服器進行中監聽的一個連接埠進行會話。這時,伺服器端接受用戶端的串連請求,那麼就進行一次迴圈。現在這個用戶端就能夠發送資訊到伺服器,伺服器也能發送資訊給用戶端。
產生一個Socket,你需要三個變數:一個協議、一個socket類型和一個公用協議類型。產生一個socket有三種協議供選擇,繼續看下面的內容來擷取詳細的協議內容。
定義一個公用的協議類型是進行串連一個必不可少的元素
下面讓我們以一個簡單的例子開始---一個接收輸入字串,處理並返回這個字串到用戶端的TCP服務.代碼如下:
<?php// 設定一些基本的變數 $host = "192.168.1.99"; $port = 1234; // 設定逾時時間 set_time_limit(0); // 建立一個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"); // accept incoming connections // 另一個Socket來處理通訊 $spawn = socket_accept($socket) or die("Could not accept incoming connection\n"); // 獲得用戶端的輸入 $input = socket_read($spawn, 1024) or die("Could not read input\n"); // 清空輸入字串 $input = trim($input); //處理用戶端輸入並返回結果 $output = strrev($input) . "\n"; socket_write($spawn, $output, strlen ($output)) or die("Could not write output\n"); // 關閉sockets socket_close($spawn); socket_close($socket); ?>