成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何進(jìn)行Gojsonrpc

今天就跟大家聊聊有關(guān)如何進(jìn)行Go jsonrpc,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

海門網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、自適應(yīng)網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)從2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)。

大家好,由于這段時(shí)間比較忙,好久不更了,現(xiàn)在給大家介紹以下go的jsonrpc用法,理論原理不多說(shuō),我個(gè)人認(rèn)為看著代碼的注釋去理解原理是最好的

(1)  服務(wù)端代碼

package main
import (
  "fmt"
  "log"
  "net"
  "net/rpc"
  "net/rpc/jsonrpc"
  "os"
)

// Resp 返回值結(jié)構(gòu)體
type Resp struct {
  Country   string
  Province  string
  City      string
  Latitude  float64
  Longitude float64
  TimeZone  string
  Data      string
}

// Serve
type Serve struct {
}

// 參數(shù)結(jié)構(gòu)體
type Agrs struct {
  IpString string
  Data     string
}

//json rpc 處理請(qǐng)求
// GetData 獲取數(shù)據(jù)
func (s *Serve) GetData(agr Agrs, res *Resp) error {
  res.City = "南寧"
  res.Province = "廣西"
  res.Country = "中國(guó)"
  res.Latitude = 888.888
  res.Longitude = 111.111
  res.TimeZone = "ssss"
  res.Data = agr.Data // 返回你傳的數(shù)據(jù)
  return nil
}

func main() {
  // 初始化jsonRPC
  serve := &Serve{}
  // 注冊(cè)服務(wù)
  rpc.Register(serve)
  //綁定端口
  address := "127.0.0.1:8080"
  tcpAddr, err := net.ResolveTCPAddr("tcp", address)
  checkError(err)
  listener, err := net.ListenTCP("tcp", tcpAddr)
  checkError(err)
  log.Println("json rpc is listening", tcpAddr)
  // 一直連接
  for {
     conn, err := listener.Accept()
     if err != nil {
        continue
     }
     go jsonrpc.ServeConn(conn)
  }

}

// 驗(yàn)證錯(cuò)誤
func checkError(err error) {
  if err != nil {
     fmt.Println("Fatal error ", err.Error())
     os.Exit(1)
  }
}

(2) 客戶端代碼

package main
import (
  "fmt"
  "log"
  "net/rpc"
  "net/rpc/jsonrpc"
)

type Response struct {
  Country   string
  Province  string
  City      string
  Latitude  float64
  Longitude float64
  TimeZone  string
  Data      string
}
type Client struct {
  *rpc.Client
}

type agrs struct {
  IpString string
  Data     string
}

func main() {
  var (
     c   = new(Client)
     err error
  )
  if c.Client, err = jsonrpc.Dial("tcp", "127.0.0.1:8080"); err != nil {
     log.Fatal("dialing:", err)
  }
  // Synchronous call
  var res Response
  var a agrs
  a.IpString = "219.140.227.235"
  a.Data = "is my data"
  err = c.Call("Serve.GetData", &a, &res)
  if err != nil {
     log.Fatal("ip2addr error:", err)
  }
  fmt.Println(res)

}

(3) 運(yùn)行

     運(yùn)行server.go

    然后運(yùn)行client.go 

    你會(huì)有意外驚喜哦

看完上述內(nèi)容,你們對(duì)如何進(jìn)行Go jsonrpc有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

名稱欄目:如何進(jìn)行Gojsonrpc
文章URL:http://jinyejixie.com/article42/jpccec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、外貿(mào)建站、品牌網(wǎng)站制作App開發(fā)、App設(shè)計(jì)、網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
开封市| 永德县| 章丘市| 裕民县| 顺义区| 杂多县| 安宁市| 汝州市| 香港 | 高邑县| 锦屏县| 金堂县| 阜南县| 壶关县| 酒泉市| 遂川县| 罗甸县| 望都县| 洛宁县| 桑日县| 阜新市| 兴化市| 西林县| 新津县| 眉山市| 米脂县| 同心县| 丹凤县| 涞源县| 洛扎县| 麻江县| 宜章县| 宜都市| 天台县| 巴彦县| 积石山| 麻江县| 泰宁县| 壶关县| 南雄市| 赤城县|