github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/09_rpc/json/server.go (about)

     1  package main
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/qiuhoude/go-web/prepare/09_rpc/moudle"
     6  	"log"
     7  	"net"
     8  	"net/rpc"
     9  	"net/rpc/jsonrpc"
    10  	"os"
    11  )
    12  
    13  func main() {
    14  	rect := new(moudle.Rect)
    15  	//注册一个rect服务
    16  	rpc.Register(rect)
    17  
    18  	addr, err := net.ResolveTCPAddr("tcp", ":8000")
    19  	if err != nil {
    20  		log.Fatal(err)
    21  	}
    22  	listener, err := net.ListenTCP("tcp", addr)
    23  	if err != nil {
    24  		log.Fatal(err)
    25  	}
    26  	fmt.Printf("%s \n", "start connection")
    27  	for {
    28  		conn, err := listener.Accept()
    29  		if err != nil {
    30  			continue
    31  		}
    32  		go func() {
    33  			fmt.Fprintf(os.Stdout, "%s", "new client in coming\n")
    34  			jsonrpc.ServeConn(conn)
    35  		}()
    36  
    37  	}
    38  
    39  }