1
0
mirror of https://github.com/chai2010/advanced-go-programming-book.git synced 2025-05-24 12:32:21 +00:00
2018-06-28 15:41:09 +08:00

41 lines
655 B
Go

package main
import (
"flag"
"fmt"
"log"
"net"
"net/rpc"
"net/rpc/jsonrpc"
)
type HelloService struct{}
func (p *HelloService) Hello(request string, reply *string) error {
*reply = "hello:" + request
return nil
}
var flagPort = flag.Int("port", 1234, "listen port")
func main() {
flag.Parse()
rpc.RegisterName("HelloService", new(HelloService))
// nc -l 2399
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", *flagPort))
if err != nil {
log.Fatal("ListenTCP error:", err)
}
for {
conn, err := listener.Accept()
if err != nil {
log.Fatal("Accept error:", err)
}
go rpc.ServeCodec(jsonrpc.NewServerCodec(conn))
}
}