Go socket實現多語言間通信

前言

socket提供了在傳輸層進行網絡編程的方法,它比基於http協議的接口傳輸更高效,RPC(Remote Procedure Call)是遠程過程調用,常用於分佈式系統等,而rpc很多是基於socket實現的。不瞭解socket、http等協議請閱讀

https://blog.csdn.net/guyan03...

Socket 都可以用“打開open –> 讀寫write/read –> 關閉close”模式來操作。它不侷限於某一語言,這裏我們主要講Go、php語言基於socket實現通訊。

序列化採用json,數據格式比較簡單,支持多種語言。

Go socket 採用c/s架構

客戶端:net.Dial() Write() Read() Close()

服務器:net.Listen() Accept() Read() Write() Close()

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

測試

1、下載源代碼至GOPATH目錄golangSocketPhp

2、運行服務端,在example目錄下server.go

go run server.php

輸出:

Waiting for clients

3、新窗口下運行客戶端,在example目錄下client.go

go run client.go

輸出:

receive data string[6]:golang

golang這個是從服務端返回的數據。

4、運行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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章