mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 20:52:22 +00:00
40 lines
560 B
Go
40 lines
560 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"net"
|
|
"net/rpc"
|
|
)
|
|
|
|
func main() {
|
|
listener, err := net.Listen("tcp", ":1234")
|
|
if err != nil {
|
|
log.Fatal("ListenTCP error:", err)
|
|
}
|
|
|
|
clientChan := make(chan *rpc.Client)
|
|
|
|
go func() {
|
|
for {
|
|
conn, err := listener.Accept()
|
|
if err != nil {
|
|
log.Fatal("Accept error:", err)
|
|
}
|
|
|
|
clientChan <- rpc.NewClient(conn)
|
|
}
|
|
}()
|
|
|
|
client := <-clientChan
|
|
defer client.Close()
|
|
|
|
var reply string
|
|
err = client.Call("HelloService.Hello", "hello", &reply)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
|
|
fmt.Println(reply)
|
|
}
|