Watch 1 Star 1 Fork 0

rocket049 / pipeconnGoApache-2.0

Create your Gitee Account
Explore and code with more than 5 million developers,Free private repositories !:)
Sign up
用标准输入输出和管道模拟 io.ReadWriteCloser,可以用于编写不依靠网络连接的 rpc server/client。 spread retract

Clone or download
Cancel
Notice: Creating folder will generate an empty file .keep, because not support in Git
Loading...
README.md

用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 目录中的是一个示例程序。

Comments ( 0 )

Sign in for post a comment

Go
1
https://gitee.com/rocket049/pipeconn.git
git@gitee.com:rocket049/pipeconn.git
rocket049
pipeconn
pipeconn
master

Search

231008 48f1a665 1899542 231017 9a6720c6 1899542