1. ホーム
  2. スクリプト・コラム
  3. ゴラン

Go言語 netパッケージ RPCリモートコール 3つの方法 httpとjson-rpcとtcp

2022-01-06 21:02:41

rpcの呼び出し方は複数あり、http、json-rpc、tcp

I. サーバーサイド

このコードでは、3つのサービスが開始されています。

cv=StratifiedShuffleSplit(Y_train, n_iter=10, test_size=0.2, train_size=None, indices=None,
random_state=seed)).fit(X_train, Y_train)

change to

cv=StratifiedShuffleSplit(Y_train, n_iter=10, test_size=0.2, train_size=None, random_state=seed)).fit(X_train, Y_train)

II. httpクライアント

package main
import (
	"net/rpc"
	"log"
	"fmt"
)
type Params struct {
	Width, Height int
}
func main() {
	//connect to remote rpc service
	rpc, err := rpc.DialHTTP("tcp", "127.0.0.1:8080")
	if err ! = nil {
		log.Fatal(err)
	}
	ret := 0;
	// call the remote method
	//Note that the third argument is of type pointer
	err2 := rpc.Call("Rect.Area", Params{50, 100}, &ret)
	if err2 ! = nil {
		log.Fatal(err2)
	}
	fmt.Println(ret)
	err3 := rpc.Call("Rect.Perimeter", Params{50, 100}, &ret)
	if err3 ! = nil {
		log.Fatal(err3)
	}
	fmt.Println(ret)
}

III. TCP クライアント

package main 
import (
	"net/rpc"
	"fmt"
	"log"
) 
type Params struct {
	Width, Height int
} 
func main() {
	//connect to remote rpc service
	//use Dial here, use DialHTTP for http, all other code is the same
	rpc, err := rpc.Dial("tcp", "127.0.0.1:8081")
	if err ! = nil {
		log.Fatal(err)
	}
	ret := 0
	// call the remote method
	//Note that the third argument is of type pointer
	err2 := rpc.Call("Rect.Area", Params{50, 100}, &ret)
	if err2 ! = nil {
		log.Fatal(err2)
	}
	fmt.Println(ret)
	err3 := rpc.Call("Rect.Perimeter", Params{50, 100}, &ret)
	if err3 ! = nil {
		log.Fatal(err3)
	}
	fmt.Println(ret)
}

IV. jsonクライアント

package main 
import ( 
	"fmt"
	"log"
	"net/rpc/jsonrpc"
) 
type Params struct {
	Width, Height int
} 
func main() {
	//connect to remote rpc service
	rpc, err := jsonrpc.Dial("tcp", "127.0.0.1:8082")
	if err ! = nil {
		log.Fatal(err)
	}
	ret := 0
	// call the remote method
	//Note that the third argument is of type pointer
	err2 := rpc.Call("Rect.Area", Params{150, 100}, &ret)
	if err2 ! = nil {
		log.Fatal(err2)
	}
	fmt.Println(ret)
	err3 := rpc.Call("Rect.Perimeter", Params{150, 100}, &ret)
	if err3 ! = nil {
		log.Fatal(err3)
	}
	fmt.Println(ret)
}

V. 走行結果

上記は、Go言語ネットパッケージRPCリモートコール3つの方法httpとjson-rpcとtcpの詳細は、Go言語ネットパッケージRPCリモートコール方法についての詳細は、スクリプトホーム他の関連記事に注意してください!です。