socket提供了在傳輸層進行網絡編程的方法,它比基於http協議的接口傳輸更高效,RPC(Remote Procedure Call)是遠程過程調用,經常使用於分佈式系統等,而rpc不少是基於socket實現的。不瞭解socket、http等協議請閱讀php
https://blog.csdn.net/guyan03...。git
Socket 均可以用「打開open –> 讀寫write/read –> 關閉close」模式來操做。它不侷限於某一語言,這裏咱們主要講Go、php語言基於socket實現通信。github
序列化採用json,數據格式比較簡單,支持多種語言。golang
Go socket 採用c/s架構編程
客戶端:net.Dial() Write() Read() Close()json
服務器:net.Listen() Accept() Read() Write() Close()瀏覽器
一、下載源代碼至GOPATH目錄golangSocketPhp服務器
二、運行服務端,在example目錄下server.go網絡
go run server.php
輸出:架構
Waiting for clients
三、新窗口下運行客戶端,在example目錄下client.go
go run client.go
輸出:
receive data string[6]:golang
golang這個是從服務端返回的數據。
四、運行php語言客戶端,在php目錄下的socket_client.php
php -f socket_client.php
或瀏覽器訪問 http://localhost/xxx/socket_c... 配置本身的網址
輸出結果:
client write success
server return message is:
php
選json序列化,主要考慮它實現起來簡單,不少語言支持。缺點是序列化效率低,序列化後數據相對比較大(這裏跟protobuf對比)。