go coap
v3.3.6
CoAP(Constrained Application Protocol)는 사물 인터넷의 제한된 노드 및 제한된 네트워크에 사용하기 위한 특수 웹 전송 프로토콜입니다. 이 프로토콜은 스마트 에너지 및 빌딩 자동화와 같은 M2M(Machine-to-Machine) 애플리케이션을 위해 설계되었습니다.
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에서 이미지를 얻으세요.