Golang简易版RPC实现

简介: Golang简易版RPC实现

server

package main
import (
  "fmt"
  "net"
)
func Hello(name string) string {
  return "HelloWorld" + name
}
func main() {
  listener, err := net.Listen("tcp4", "127.0.0.1:6872")
  if err != nil {
    fmt.Println("Listen err:", err)
  }
  conn, err := listener.Accept()
  if err != nil {
    fmt.Println("Accept err:", err)
  }
  defer conn.Close()
  funcMap := make(map[string]func(string) string)
  funcMap["Hello"] = Hello
  buf := make([]byte, 1024)
  n, err := conn.Read(buf)
  if err != nil {
    fmt.Println("Read err:", err)
  }
  funcName := string(buf[:n])
  n, err = conn.Read(buf)
  if err != nil {
    fmt.Println("Read err:", err)
  }
  funcArgs := string(buf[:n])
  function := funcMap[string(funcName)]
  result := function(string(funcArgs))
  conn.Write([]byte(result))
}

client

package main
import (
  "fmt"
  "net"
  "time"
)
func main(){
  conn,err:=net.Dial("tcp4", "127.0.0.1:6872")
  if err != nil {
    fmt.Println("Dial err:", err)
  }
  conn.Write([]byte("Hello"))
  time.Sleep(1*time.Second)
  conn.Write([]byte("wxf"))
  buf := make([]byte, 1024)
  n, err := conn.Read(buf)
  if err != nil {
    fmt.Println("Read err:", err)
  }
  fmt.Println(string(buf[:n]))
}


目录
相关文章
|
11月前
|
Go 数据库
Golang 语言编写 gRPC 实战项目
Golang 语言编写 gRPC 实战项目
116 0
|
11月前
|
JSON 自然语言处理 编译器
Golang 语言 gRPC 到底是什么?
Golang 语言 gRPC 到底是什么?
70 0
|
11月前
|
编解码 JSON 网络协议
Golang 语言使用标准库 net/rpc/jsonrpc 包跨语言远程调用
Golang 语言使用标准库 net/rpc/jsonrpc 包跨语言远程调用
94 0
|
13天前
|
Go API
Golang语言开发注意事项
这篇文章总结了Go语言开发中的注意事项,包括语法细节、注释使用、代码风格、API文档的利用以及如何使用godoc工具来生成文档。
18 2
|
1月前
|
存储 Prometheus 监控
Golang 搭建 WebSocket 应用(六) - 监控
Golang 搭建 WebSocket 应用(六) - 监控
31 3
|
1月前
|
网络协议 Go 网络安全
[golang]简单的文件上传下载
[golang]简单的文件上传下载
|
1月前
|
人工智能 安全 Go
Golang 搭建 WebSocket 应用(八) - 完整代码
Golang 搭建 WebSocket 应用(八) - 完整代码
28 0
|
11月前
|
自然语言处理 编译器 Go
Golang 语言 gRPC 怎么使用?
Golang 语言 gRPC 怎么使用?
50 0
|
XML 编译器 Go
十分钟学会Golang开发gRPC服务1
十分钟学会Golang开发gRPC服务1
78 0
|
4月前
|
Go
golang安装protoc和gRPC步骤
golang安装protoc和gRPC步骤
116 0