go coap
v3.3.6
Constrained Application Protocol (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 の README でロゴをサイトへのリンクとともに取得してください。
後援者になり、サイトへのリンクを含む Github の README でイメージを入手してください。