最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang兩種調(diào)用rpc的方法

 更新時間:2016年07月26日 16:19:42   作者:軒脈刃  
這篇文章主要介紹了golang兩種調(diào)用rpc的方法,結(jié)合實例形式分析了Go語言調(diào)用rpc的原理與實現(xiàn)方法,需要的朋友可以參考下

本文實例講述了golang兩種調(diào)用rpc的方法。分享給大家供大家參考,具體如下:

golang的rpc有兩種方法進(jìn)行調(diào)用,一種是rpc例子中給的:

復(fù)制代碼 代碼如下:
package main
import (
        "net/rpc"
        "net/http"
        "log"
        "net"
        "time"
)
type Args struct {
        A, B int
}
type Arith int
func (t *Arith) Multiply(args *Args, reply *([]string)) error {
        *reply = append(*reply, "test")
        return nil
}
func main() {
        arith := new(Arith)
        rpc.Register(arith)
        rpc.HandleHTTP()
        l, e := net.Listen("tcp", ":1234")
        if e != nil {
                log.Fatal("listen error:", e)
        }
        go http.Serve(l, nil)
        time.Sleep(5 * time.Second)
        client, err := rpc.DialHTTP("tcp", "127.0.0.1" + ":1234")
        if err != nil {
                log.Fatal("dialing:", err)
        }
        args := &Args{7,8}
        reply := make([]string, 10)
        err = client.Call("Arith.Multiply", args, &reply)
        if err != nil {
                log.Fatal("arith error:", err)
        }
        log.Println(reply)
}

另一種是使用NewServer

這種是當(dāng)rpc已經(jīng)注冊的時候就要使用了另外一種了。即一個server只能在DefaultRPC中注冊一種類型。

當(dāng)Server使用rpc.NewServer的時候,client也需要進(jìn)行下改動了

復(fù)制代碼 代碼如下:
package main
import (
        "net/rpc"
        //"net/http"
        "log"
        "net"
        "time"
)
type Args struct {
        A, B int
}
type Arith int
func (t *Arith) Multiply(args *Args, reply *([]string)) error {
        *reply = append(*reply, "test")
        return nil
}
func main() {
        newServer := rpc.NewServer()
        newServer.Register(new(Arith))
        l, e := net.Listen("tcp", "127.0.0.1:1234") // any available address
        if e != nil {
                log.Fatalf("net.Listen tcp :0: %v", e)
        }
        go newServer.Accept(l)
        newServer.HandleHTTP("/foo", "/bar")
        time.Sleep(2 * time.Second)
        address, err := net.ResolveTCPAddr("tcp", "127.0.0.1:1234")
        if err != nil {
                panic(err)
        }
        conn, _ := net.DialTCP("tcp", nil, address)
        defer conn.Close()
        client := rpc.NewClient(conn)
        defer client.Close()
        args := &Args{7,8}
        reply := make([]string, 10)
        err = client.Call("Arith.Multiply", args, &reply)
        if err != nil {
                log.Fatal("arith error:", err)
        }
        log.Println(reply)
}

第二個例子中的

復(fù)制代碼 代碼如下:
newServer.HandleHTTP("/foo", "/bar")

可以任意設(shè)置,第一個例子其實是設(shè)置了默認(rèn)的兩個

這里也順便將reply作為[]slice的例子給演示了下

希望本文所述對大家Go語言程序設(shè)計有所幫助。

相關(guān)文章

  • go通過benchmark對代碼進(jìn)行性能測試詳解

    go通過benchmark對代碼進(jìn)行性能測試詳解

    在開發(fā)中我們要想編寫高性能的代碼,或者優(yōu)化代碼的性能時,你首先得知道當(dāng)前代碼的性能,在go中可以使用testing包的benchmark來做基準(zhǔn)測試 ,文中有詳細(xì)的代碼示例,感興趣的小伙伴可以參考一下
    2023-04-04
  • Go語言Gin框架實現(xiàn)HTML頁面渲染

    Go語言Gin框架實現(xiàn)HTML頁面渲染

    Web開發(fā)中,我們經(jīng)常要面對如何將數(shù)據(jù)渲染到前端的問題,這就涉及到了模板引擎的知識,Go語言的Gin框架就提供了強大的HTML模板渲染功能,本文就來為大家介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2024-01-01
  • Go語言omitempty選項的實現(xiàn)

    Go語言omitempty選項的實現(xiàn)

    本文主要介紹了Go語言omitempty選項的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Go語言defer的一些神奇規(guī)則示例詳解

    Go語言defer的一些神奇規(guī)則示例詳解

    這篇文章主要為大家介紹了Go語言defer的一些神奇規(guī)則示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Go切片的具體使用

    Go切片的具體使用

    本文主要介紹了Go切片的具體使用,包括聲明切片、初始化切片、切片的切割、切片的添加、切片的刪除、切片的復(fù)制、切片的遍歷、多維切片等,感興趣的可以了解一下
    2023-11-11
  • Golang實現(xiàn)web文件共享服務(wù)的示例代碼

    Golang實現(xiàn)web文件共享服務(wù)的示例代碼

    這篇文章主要介紹了Golang實現(xiàn)web文件共享服務(wù)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • gorm 結(jié)構(gòu)體中 binding 和 msg 結(jié)構(gòu)體標(biāo)簽示例詳解

    gorm 結(jié)構(gòu)體中 binding 和 msg 結(jié)構(gòu)體標(biāo)簽示例詳解

    文章介紹了Gin框架中binding和msg結(jié)構(gòu)體標(biāo)簽的使用,包括基本用法、常用驗證規(guī)則、自定義驗證器、錯誤信息自定義、控制器使用示例、組合驗證規(guī)則、跨字段驗證和初始化驗證器等,這些標(biāo)簽主要用于數(shù)據(jù)驗證、自定義錯誤信息、參數(shù)綁定和表單驗證
    2024-11-11
  • golang根據(jù)生日計算星座和屬相實例

    golang根據(jù)生日計算星座和屬相實例

    這篇文章主要為大家介紹了golang根據(jù)生日計算星座和屬相的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Go語言正則表達(dá)式的使用詳解

    Go語言正則表達(dá)式的使用詳解

    正則表達(dá)式是一種進(jìn)行模式匹配和文本操縱的功能強大的工具。這篇文章主要介紹了Go正則表達(dá)式使用,本文給大家介紹的非常詳細(xì),對大家的工作或?qū)W習(xí)具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • Mac上Go環(huán)境和VS Code的正確安裝與配置方法

    Mac上Go環(huán)境和VS Code的正確安裝與配置方法

    Go語言是一個新興的語言。下面介紹一下如何在Mac系統(tǒng)下安裝和使用這個語言,Go語言提供了mac下安裝包,可直接下載安裝包點擊安裝
    2018-03-03

最新評論

封丘县| 迁西县| 红原县| 泸定县| 绍兴县| 大关县| 荆门市| 马公市| 松桃| 闻喜县| 达孜县| 东乌珠穆沁旗| 嘉祥县| 车致| 长沙县| 张北县| 丰原市| 二连浩特市| 新龙县| 旅游| 县级市| 靖州| 璧山县| 镇坪县| 新竹县| 青冈县| 都匀市| 呼图壁县| 镇赉县| 祁东县| 河曲县| 仁寿县| 洪湖市| 蒲城县| 花垣县| 宜良县| 陕西省| 汤阴县| 平阳县| 温泉县| 青浦区|