package main
import (
"errors"
"fmt"
"time"
)
// 客户端调用
func RPCClient(ch chan string, req string) (string, error) {
ch <- req
select {
case ack := <-ch:
return ack, nil
case <-time.After(time.Second):
return "", errors.New("Time Out")
}
}
// 服务端调用
func RPCServer(ch chan string) {
for ; ; {
data := <- ch
fmt.Println("server received:", data)
time.Sleep(2*time.Second)
ch <- "loger"
}
}
func main() {
ch := make(chan string)
go RPCServer(ch)
recv, err := RPCClient(ch, "hello")
if err != nil{
fmt.Println(err)
}else{
fmt.Println("client received", recv)
}
}
Go语言基础案列学习 --RPC调用
最新推荐文章于 2022-04-28 15:45:25 发布