mirror of
https://github.com/chai2010/advanced-go-programming-book.git
synced 2025-05-24 20:52:22 +00:00
41 lines
655 B
Go
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))
|
|
}
|
|
}
|