< >

    用pipeconn帮助go语言程序编写不依靠网络连接的 rpc server/client

    包路径: gitee.com/rocket049/pipeconn

    代码托管页面链接

    pipeconn用标准输入输出和管道模拟 io.ReadWriteCloser,可以用于编写不依靠网络连接的 rpc 服务器和客户端,通过它程序可以不通过网络也使用RPC方式调用另一个本机程序。

    服务器方建立连接时调用pipeconn.NewServerPipeConn()

    客户端建立连接时调用NewClientPipeConn(progPath , args...)

    下面是示例程序:

    服务端程序:

    //pipe-server.go
    package main
    import (
    	"net/rpc"
    	"gitee.com/rocket049/pipeconn"
    )
    
    //定义服务类型 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 调用
    	......
    }
    

    完整示例程序

    rpc 目录中的是一个示例程序。

    备案号:苏ICP备19034936号    站长邮箱:fuhuizn@163.com

    苏公网安备 32050702010684号