(本文轉載: http://www.cnblogs.com/yimiao/archive/2011/10/28/2227603.html)
工作實在比較閑,就來寫寫部落格吧。順便整理下。環境:windows
PHP在WIN下操作socket最好用命令列運行程式,至於為什麼,自己可以體會下。
首先運行php + 程式的路徑,出現了這個提示表示你的php沒有加入環境變數path下面。
然後找到你的php安裝目錄,我的是這個
然後複製上面的路徑,右鍵點擊我的電腦-屬性-進階-環境變數,添加到環境變數中,注意有個;號,看
然後確定,儲存。再次運行cmd,OK成功了。不會出現那個提示了。
接下來就是主題了,先放代碼
= 5){ break; }; } //echo $buf; socket_close($msgsock);} while (true);socket_close($sock);?>
這是socket的服務端代碼。然後運行cmd,注意是自己的程式存放路徑啊。
沒有反映,對現在服務端的程式已經開始運行,連接埠已經開始監聽了。運行netstat -ano可以查看連接埠情況,我的是1935連接埠
看,連接埠已經處於LISTENING狀態了。接下來我們只要運行用戶端程式即可串連上。上代碼
TCP/IP Connection\n";$port = 1935;$ip = "127.0.0.1";/* +------------------------------- * @socket串連整個過程 +------------------------------- * @socket_create * @socket_connect * @socket_write * @socket_read * @socket_close +-------------------------------- */$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if ($socket < 0) { echo "socket_create() failed: reason: " . socket_strerror($socket) . "\n";}else { echo "OK.\n";}echo "試圖串連 '$ip' 連接埠 '$port'...\n";$result = socket_connect($socket, $ip, $port);if ($result < 0) { echo "socket_connect() failed.\nReason: ($result) " . socket_strerror($result) . "\n";}else { echo "串連OK\n";}$in = "Ho\r\n";$in .= "first blood\r\n";$out = '';if(!socket_write($socket, $in, strlen($in))) { echo "socket_write() failed: reason: " . socket_strerror($socket) . "\n";}else { echo "發送到伺服器資訊成功!\n"; echo "發送的內容為:$in
";}while($out = socket_read($socket, 8192)) { echo "接收伺服器回傳資訊成功!\n"; echo "接受的內容為:",$out;}echo "關閉SOCKET...\n";socket_close($socket);echo "關閉OK\n";?>
至此用戶端已經串連上服務端了。這隻是個小例子,很多東西知道原理其他就好做了