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]))
}


目录
相关文章
|
Go 数据库
Golang 语言编写 gRPC 实战项目
Golang 语言编写 gRPC 实战项目
150 0
|
JSON 自然语言处理 编译器
Golang 语言 gRPC 到底是什么?
Golang 语言 gRPC 到底是什么?
96 0
|
消息中间件 自然语言处理 Go
Golang 语言编写的消息队列 NSQ 官方客户端 go-nsq 怎么使用?
Golang 语言编写的消息队列 NSQ 官方客户端 go-nsq 怎么使用?
129 0
|
5月前
|
存储 Prometheus 监控
Golang 搭建 WebSocket 应用(六) - 监控
Golang 搭建 WebSocket 应用(六) - 监控
51 3
|
5月前
|
人工智能 安全 Go
Golang 搭建 WebSocket 应用(八) - 完整代码
Golang 搭建 WebSocket 应用(八) - 完整代码
49 0
|
5月前
|
网络协议 Go
[golang]gin框架接收websocket通信
[golang]gin框架接收websocket通信
133 0
|
6月前
|
监控 Go
golang开发 gorilla websocket的使用
【7月更文挑战第11天】在Golang中, 使用Gorilla WebSocket库可轻松实现WebSocket通信。安装库: `go get github.com/gorilla/websocket`。创建连接: `websocket.DefaultDialer.Dial("ws://url", nil)`。发送消息: `conn.WriteMessage(websocket.TextMessage, []byte("Hello"))`。接收消息: 循环调用`conn.ReadMessage()`。适用于实时聊天或股票行情等场景。
148 0
|
7月前
|
移动开发 Go
golang bufio包怎么用?
`bufio` 是 Go 语言中用于提高 I/O 性能的包,它通过使用缓冲区减少对低效磁盘 I/O 操作的调用。简而言之,`bufio` 提供带缓冲的读写功能,减少读取或写入文件时的系统调用次数,从而提升程序性能。
|
自然语言处理 编译器 Go
Golang 语言 gRPC 怎么使用?
Golang 语言 gRPC 怎么使用?
72 0
|
开发框架 Go 微服务
Golang 语言怎么使用 go-micro 和 gin 开发微服务?
Golang 语言怎么使用 go-micro 和 gin 开发微服务?
428 0

热门文章

最新文章

下一篇
开通oss服务