包路徑: gitee.com/rocket049/pipeconn
pipeconn
用標(biāo)準(zhǔn)輸入輸出和管道模擬 io.ReadWriteCloser
,可以用于編寫不依靠網(wǎng)絡(luò)連接的 rpc
服務(wù)器和客戶端胜嗓,通過它程序可以不通過網(wǎng)絡(luò)也使用RPC
方式調(diào)用另一個(gè)本機(jī)程序邑跪。
服務(wù)器方建立連接時(shí)調(diào)用pipeconn.NewServerPipeConn()
客戶端建立連接時(shí)調(diào)用NewClientPipeConn(progPath , args...)
下面是示例程序:
服務(wù)端程序:
//pipe-server.go
package main
import (
"net/rpc"
"gitee.com/rocket049/pipeconn"
)
//定義服務(wù)類型 Arith
......
func main() {
arith := new(Arith)
server := rpc.NewServer()
server.Register(arith)
conn := pipeconn.NewServerPipeConn()
server.ServeConn(conn)
}
客戶端程序:
//pipe-client.go
package main
import (
"net/rpc"
"gitee.com/rocket049/pipeconn"
)
func callRpc() error{
conn, err := pipeconn.NewClientPipeConn("./pipe-server")
if err != nil {
return error
}
client := rpc.NewClient(conn)
defer client.Close()
//使用 rpc 調(diào)用
......
}