php ocket通訊機制

2022-08-09 05:18:10 字數 3076 閱讀 3798

一,socket是什麼

什麼是socket 所謂socket通常也稱作"套接字",用於描述ip位址和埠,是乙個通訊鏈的控制代碼。應用程式通常通過"套接字"向網路發出請求或者應答網路請求。說白了就是一種通訊機制。它類似於銀行,電信啊這些部分的**客服部門。你打**的時候,那邊會分配置乙個人回答你的問題,客服部門就相當於socket的伺服器端了,你這邊呢就相當於客戶端了,在和你通話結束前,如果有人在想找和你通話的那個說話,是不可能的,因為你在和他通訊,當然客服部門的**交換機也不會重複分配。

下面我將舉例子來說明一下,socket是怎麼工作的。如果你是基於應用層開發的人員並不一定要理解原理,但是能知道那是更好了。網上有關於socket的php api。下下來用就行了。

二,socket伺服器server.php

檢視複製列印?

<?php   

// 建立server端socket  

$tcp = getprotobyname("tcp");  

$socket = socket_create(af_inet, sock_stream, $tcp);  

socket_bind($socket, '127.0.0.1', 10008);       //繫結要監聽的埠  

socket_listen($socket);       //監聽埠  

//初始化乙個資料,和客戶端通訊  

$buffer = "connect";  

while (true) else else   

// 從客戶端取得資訊  

while ($data = @socket_read($connection, 1024, php_normal_read))   

}  socket_close($connection);  

//關閉 socket  

printf("closed the socket\n");  

}  ?>  

三,socket客戶端client.php

檢視複製列印?

<?php   

// 建立客戶端的socet連線  

$socket = socket_create(af_inet, sock_stream, sol_tcp);  

$connection = socket_connect($socket, '127.0.0.1', 10008);    //連線伺服器端socket  

while ($buffer = @socket_read($socket, 1024, php_normal_read))  else   

//伺服器端收到資訊後,給於的回應資訊  

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

}  }  

?>  

四,通訊機制的乙個(不考慮等待時間結束自動關閉socket)

socket互動流程

簡單說明一下,在說明前我要說一下,為什麼要用php命令來執行伺服器和客戶端,客戶端你用fsockopen,這樣就在流覽器上訪問了,不至少於會連線超時。為什麼會這樣呢,因為你建立乙個socket時,它會不斷的去監聽客戶有沒有要來連線。

socket通訊的建立要二個socket通道,乙個是伺服器端建立的,乙個是客戶端建立的。

1號線,伺服器建立乙個socket通道,並將資訊放到快取,等待客戶端連線

2號線,客戶端建立乙個socket通道,並連線伺服器端,取得伺服器端的資訊進行通訊,將要傳的資訊送入通道

3號線,伺服器端從客戶端取得資訊,並告訴客戶端,資訊我已經收到了。將要傳的資訊送入通道

4號線,客戶端從伺服器端取得確認資訊

到此乙個通訊就完全建立了,資料傳輸完畢後,伺服器端會斷開socket通訊,具體操作如下

1,執行socket伺服器端

[root@blackghost zhangy]# /usr/local/php/bin/php -a /home/zhangy/www/test2/server.php

interactive mode enabled

這一點做了那些工作呢

a,監聽了乙個10008埠

[zhangy@blackghost ~]$ netstat -an |grep listen |grep 10008

tcp        0      0 127.0.0.1:10008         0.0.0.0:*               listen

[zhangy@blackghost ~]$

b,將資訊送到快取裡面

$buffer = "connect";看上面的**2,執行socket客戶端[root@blackghost zhangy]# /usr/local/php/bin/php -a /home/zhangy/www/test2/client.php

interactive mode enabled

buffer data: connect

writing to socket

sent to server: some data

response from server was:information received3,回到伺服器端[root@blackghost zhangy]# /usr/local/php/bin/php -a /home/zhangy/www/test2/server.php

interactive mode enabled

socket connected

send data to client

wrote to socket

buffer: some data

closed the socket

關於上圖純屬個人理解,如有不對,請大俠們指教。

CUDA通訊機制

cuda體系架構支援怎麼樣的通訊方法呢?往下看嘍 1.syncthreads block 內的執行緒同步。block 內所有執行緒都執行到這一位置 bar指令 先到的要等後來的,到齊了後再繼續後面的任務。執行結果對 block 內所有執行緒可見 2.memory fence l threadfenc...

Socket通訊機制

socket套接字起源於美國泊克利大學.方便了開發網路應用程式.tcp面向連線的可靠傳輸協議,具有資料確認和資料重傳機制.保證了傳送資料一定能到達通訊的對方.對資料完整性要求比較高的場合使用 upd協議無連線,不可靠的傳輸協議.不具有資料確認和資料重傳機制,對資料完整性要求比較低的場合使用 ip 網...

CUDA通訊機制

分類 gpu cuda opencl2009 08 25 21 57 1479人閱讀 收藏舉報 cuda compiler thread function任務 cuda體系架構支援怎麼樣的通訊方法呢?往下看嘍 1.syncthreads block內的執行緒同步。block內所有執行緒都執行到這一位...