1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| type Arguments struct { A int B int }
func main() { client, err := rpc.DialHTTP("tcp", ":8080") if err != nil { log.Fatal(err.Error()) }
args := Arguments{5, 7} var resp int
err = client.Call("DemoRpc.Add", args, &resp) if err != nil { log.Fatal(err.Error()) } log.Printf("DemoRpc Add(%d, %d): %v\n", args.A, args.B, resp)
err = client.Call("DemoRpc.Minus", args, &resp) if err != nil { log.Fatal(err.Error()) } log.Printf("DemoRpc Minus(%d, %d): %v\n", args.A, args.B, resp)
args = Arguments{5, 0}
call := client.Go("DemoRpc.Div", args, &resp, nil) for { select { case <-call.Done: if call.Error != nil { log.Fatal(call.Error.Error()) } log.Printf("DemoRpc Div(%d, %d): %v\n", args.A, args.B, resp) return default: log.Println("waiting...") time.Sleep(time.Second) } } }
|