一,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.phpinteractive 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內所有執行緒都執行到這一位...