php socket程式設計通訊

2021-06-16 20:53:12 字數 3469 閱讀 6058

我們程式設計就是按這個順序的,請看下面的圖

//建立乙個連線

$socket=socket_create(af_inet,sock_stream,sol_tcp)or die("cannot create socket\n");

//繫結socket到埠

$result=socket_bind($socket,$host,$port) or die("cannot bind port to socket\n");

//開始監聽這個埠

$result=socket_listen($socket,4) or die("could not set up socket listen\n");

//接受連線,另乙個socket來處理通訊

$msgsock=socket_accept($socket) or die("cannot accept incoming connection\n");

if($msgsock)

//讀取客戶端傳送過來的資訊

$input=socket_read($msgsock,1024) or die("cannot read input\n");

$input=trim($input);

$output=strrev($input)."順序反過來了吧\n";

//對接收到的資訊進行處理,然後返回到客戶端

socket_write($msgsock,$output,strlen($output)) or die("cannot write");

//關閉socket連線

socket_close($msgsock);

socket_close($socket);

?>

<?php 

set_time_limit(0);

$host="localhost";

$port=1000;

//建立乙個socket

$socket=socket_create(af_inet,sock_stream,sol_tcp)or die("cannot create socket\n");

$conn=socket_connect($socket,$host,$port) or die("cannot connect server\n");

if($conn)

socket_write($socket,"hello world!") or die("cannot write data\n");

$buffer=socket_read($socket,1024,php_normal_read);

if($buffer)

socket_close($socket);

?>

注意事項:  1  測試socket的時候必須要確定你是否開啟socket擴充套件庫,如果沒有請到php.ini中找到extension_dir=php_sockets.dll,把                            前面的分號去掉

2  測試時,在瀏覽器中輸入http://localhost/serversocket.php  和http://localhost/client.php  ,現在問題就來了,到底先運                             行哪個呢,因為

客戶端要回應,所以我們先執行server再執行client  ,這樣你就能看到結果了。

socket函式參考

socket_accept() 接受乙個socket連線

socket_bind() 把socket繫結在乙個ip位址和埠上

socket_clear_error() 清除socket的錯誤或最後的錯誤**

socket_close() 關閉乙個socket資源

socket_connect() 開始乙個socket連線

socket_create_listen() 在指定埠開啟乙個socket監聽

socket_create_pair() 產生一對沒有差別的socket到乙個陣列裡

socket_create() 產生乙個socket,相當於產生乙個socket的資料結構

socket_get_option() 獲取socket選項

socket_getpeername() 獲取遠端類似主機的ip位址

socket_getsockname() 獲取本地socket的ip位址

socket_iovec_add() 新增乙個新的向量到乙個分散/聚合的陣列

socket_iovec_alloc() 這個函式建立乙個能夠傳送接收讀寫的iovec資料結構

socket_iovec_delete() 刪除乙個已分配的iovec

socket_iovec_fetch() 返回指定的iovec資源的資料

socket_iovec_free() 釋放乙個iovec資源

socket_iovec_set() 設定iovec的資料新值

socket_last_error() 獲取當前socket的最後錯誤**

socket_listen() 監聽由指定socket的所有連線

socket_read() 讀取指定長度的資料

socket_readv() 讀取從分散/聚合陣列過來的資料

socket_recv() 從socket裡結束資料到快取

socket_recvfrom() 接受資料從指定的socket,如果沒有指定則預設當前socket

socket_recvmsg() 從iovec裡接受訊息

socket_select() 多路選擇

socket_send() 這個函式傳送資料到已連線的socket

socket_sendmsg() 傳送訊息到socket

socket_sendto() 傳送訊息到指定位址的socket

socket_set_block() 在socket裡設定為塊模式

socket_set_nonblock() socket裡設定為非塊模式

socket_set_option() 設定socket選項

socket_shutdown() 這個函式允許你關閉讀、寫、或指定的socket

socket_strerror() 返回指定錯誤號的周詳錯誤

socket_write() 寫資料到socket快取

socket_writev() 寫資料到分散/聚合陣列

PHP SOCKET程式設計!

server.php php 確保在連線客戶端時不會超時 set time limit 0 設定ip和埠號 address 伺服器自己的ip port 埠號 建立乙個socket if sock socket create af inet sock stream sol tcp 0 繫結到socke...

php socket 程序間通訊

參考 什麼叫協議?上面的這個演示的就是協議!雙方約定了相互交流的口令!你發了 close 字串過來,就代表想中斷通話,故服務端就關閉連線!a.php set time limit 0 host 0.0.0.0 port 10086 建立socket socket socket create af i...

PHP Socket 程式設計詳解

最近在做的專案有一項需要耗時任務在後台執行的功能,雖然php並不是非常適合做常駐後台的守護程序,但是由於專案主要 都是基於php實現,如 果執行在後台的守護程序改換別的語言會非常不方便。所以不可避免會涉及到web端和daemon部分的通訊,socket是乙個不錯的方式。socket的英文原義是 孔 ...