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リモートコール方法についての詳細は、スクリプトホーム他の関連記事に注意してください!です。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン