Go socket實現多語言間通訊

前言

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()瀏覽器

源代碼地址:https://github.com/guyan0319/...

測試

一、下載源代碼至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對比)。

links

相關文章
相關標籤/搜索