分类 默认分类 下的文章

server

type Yqmiot int

func (iot Yqmiot) Report(req ReportRequest, resp ReportRespone) error {

}

var yqmiot Yqmiot
rpc.Register(&yqmiot)
rpc.HandleHTTP()
http.ListenAndServe(":8000", nil)

client

r, err = rpc.DialHTTP("tcp", "localhost:8000")

var req ReportRequest
var resp ReportRespone
req.xxx = xxx
err = r.Call("Yqmiot.Report", req, &resp)

package main

import "net/http"

type MyHandler struct {
}

func (h *MyHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    w.Write([]byte("hello world!"))
}

func main() {
    // 注册 uri 处理函数
    http.HandleFunc("/xxx", func(w http.ResponseWriter, r *http.Request) {
        w.Write([]byte("hello world!"))
    }
    // 开启 http 服务,并注册 handler 处理器
    http.ListenAndServe(":8000", &MyHandler{})
}

http 模块需要一个 handler (此 handler 需要实现 ServerHTTP 方法) 来处理 http请求,在开启 http 服务的时候没有提供 handler 则会使用默认 handler
(DefaultServeMux) 来处理。
http.HandleFunc 函数的作用是在 DefaultServeMux 注册对应 uri 的处理函数,此处理函数的定义和 ServerHTTP 一模一样。

func () ServeHTTP(w http.ResponseWriter, r *http.Request) {

}