go coap
v3.3.6
受限应用协议 (CoAP) 是一种专门的 Web 传输协议,用于物联网中的受限节点和受限网络。该协议专为智能能源和楼宇自动化等机器对机器 (M2M) 应用而设计。
go-coap 以 golang 语言提供 DTLS、TCP-TLS、UDP、TCP 的服务器和客户端。
// Server
// Middleware function, which will be called for each request.
func loggingMiddleware ( next mux. Handler ) mux. Handler {
return mux . HandlerFunc ( func ( w mux. ResponseWriter , r * mux. Message ) {
log . Printf ( "ClientAddress %v, %v n " , w . Conn (). RemoteAddr (), r . String ())
next . ServeCOAP ( w , r )
})
}
// See /examples/simple/server/main.go
func handleA ( w mux. ResponseWriter , req * mux. Message ) {
err := w . SetResponse ( codes . GET , message . TextPlain , bytes . NewReader ([] byte ( "hello world" )))
if err != nil {
log . Printf ( "cannot set response: %v" , err )
}
}
func main () {
r := mux . NewRouter ()
r . Use ( loggingMiddleware )
r . Handle ( "/a" , mux . HandlerFunc ( handleA ))
r . Handle ( "/b" , mux . HandlerFunc ( handleB ))
log . Fatal ( coap . ListenAndServe ( "udp" , ":5688" , r ))
// for tcp
// log.Fatal(coap.ListenAndServe("tcp", ":5688", r))
// for tcp-tls
// log.Fatal(coap.ListenAndServeTLS("tcp", ":5688", &tls.Config{...}, r))
// for udp-dtls
// log.Fatal(coap.ListenAndServeDTLS("udp", ":5688", &dtls.Config{...}, r))
}
// Client
// See /examples/simpler/client/main.go
func main () {
co , err := udp . Dial ( "localhost:5688" )
// for tcp
// co, err := tcp.Dial("localhost:5688")
// for tcp-tls
// co, err := tcp.Dial("localhost:5688", tcp.WithTLS(&tls.Config{...}))
// for dtls
// co, err := dtls.Dial("localhost:5688", &dtls.Config{...}))
if err != nil {
log . Fatalf ( "Error dialing: %v" , err )
}
ctx , cancel := context . WithTimeout ( context . Background (), time . Second )
defer cancel ()
resp , err := co . Get ( ctx , "/a" )
if err != nil {
log . Fatalf ( "Cannot get response: %v" , err )
return
}
log . Printf ( "Response: %+v" , resp )
}
服务器示例。
客户端示例。
服务器示例。
客户端示例。
阿帕奇2.0
成为赞助商并在 Github 上的自述文件中获取您的徽标以及指向您网站的链接。
成为支持者并在 Github 上的自述文件中获取您的图片以及指向您网站的链接。