GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - PelionIoT/java-coap: CoAP Java library

BranchesTags
Open more actions menu

Latest commit

 

History

317 Commits
317 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/workflows
.github/workflows
 
 
.idea
.idea
 
 
coap-core
coap-core
 
 
example-client
example-client
 
 
lwm2m
lwm2m
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
codecov.yml
codecov.yml
 
 
deploy.sh
deploy.sh
 
 
license-header.txt
license-header.txt
 
 
pmd-rules.xml
pmd-rules.xml
 
 
pom.xml
pom.xml
 
 
spotbugs-exlude.xml
spotbugs-exlude.xml
 
 

Repository files navigation

mbed CoAP

CircleCI License codecov Known Vulnerabilities

Maintenance

This repository is under minimal maintenance. There is a more actively developed version available at https://github.com/open-coap/java-coap - you might want to check that repository out. There are API differences, though.

Introduction

This library makes it easy to integrate a Java SE enabled device with CoAP based services like Izuma Networks Device Management. It can also help to emulate an embedded device for prototyping and testing purposes.

The following features are supported by the library:

  • Complete CoAP support
    • The Constrained Application Protocol RFC 7252
    • Observing Resources in the Constrained Application Protocol RFC 7641
    • Block-Wise Transfers in the Constrained Application Protocol RFC 7959
  • CoRE Link Format processing API
    • Constrained RESTful Environments (CoRE) Link Format RFC 6690
  • CoAP server mode
  • CoAP client mode
  • Coap over tcp, tls RFC 8323
    • excluding: websockets, observations with BERT blocks
  • Network transports:
    • UDP (plain text)
    • TCP (plain text)
    • TLS
  • LwM2M TLV and JSON data formats

Requirements

Runtime:

  • JRE 8
  • JRE 11

Development:

  • JDK 8
  • maven 3.x

Using the Library

Add repository to build file:

<repositories>
	<repository>
	    <id>jitpack.io</id>
	    <url>https://jitpack.io</url>
	</repository>
</repositories>

Add dependency into your pom.xml:

<dependency>
    <groupId>com.mbed.java-coap</groupId>
    <artifactId>coap-core</artifactId>
    <version>{VERSION}</version>
</dependency>

Creating a Server

Initializing, starting and stopping the server

To initialize a server, you must at minimum define the port number. You must set the server parameters before starting a server.

CoapServer server = CoapServer.builder().transport(5683).build();
server.start();

To stop a server, use the stop() method.

server.stop();

Adding request handlers

You can add handlers before or while the server is running. There can be several URI paths assigned to the same handler. You can also remove a handler at any time.

CoapHandler handler = new ReadOnlyCoapResource("24");
server.addRequestHandler("/temperature", handler);

server.removeRequestHandler(handler);

Creating CoAP resources

To create a CoAP resource, you must implement a CoapHandler. There is one abstract helper class CoapResource that can be extended. At minimum, implement the get() method.

The following example overrides get() and put() and creates a simple CoAP resource:

public class SimpleCoapResource extends CoapResource {
    private String body="Hello World";
    
    @Override
    public void get(CoapExchange ex) throws CoapCodeException {
        ex.setResponseBody("Hello World");
        ex.setResponseCode(Code.C205_CONTENT);
        ex.sendResponse();
    }
    
    @Override
    public void put(CoapExchange ex) throws CoapCodeException {
      body = ex.getRequestBodyString();        
        ex.setResponseCode(Code.C204_CHANGED);
        ex.sendResponse();
    }
}

Creating a client

To make a CoAP request, use the class CoapClient. It uses fluent API. The following is a simple example on the usage:

CoapClient client = CoapClientBuilder.newBuilder(new InetSocketAddress("localhost",5683)).build();

CoapPacket coapResp = client.resource("/s/temp").sync().get();

coapResp = client.resource("/a/relay").payload("1", MediaTypes.CT_TEXT_PLAIN).sync().put();
    
//it is important to close connection in order to release socket
client.close();

Example client

This example client demonstrates how to build coap client.

Development

Issues with localhost on Ubuntu

Ubuntu has IP addresses for localhost, 127.0.0.1 and 127.0.1.1. This causes problems with CoAP packets, the request and response address does not match. Change both addresses to 127.0.0.1 or comment or remove the latter from /etc/hosts and change hostname to localhost.

To check hostname:

    hostname

To change hostname to localhost:

    sudo hostname localhost

Build

mvn clean install

Build with all checks enabled

mvn clean install -P ci

Update license header

mvn com.mycila:license-maven-plugin:format

Contributions

All contributions are Apache 2.0. Only submit contributions where you have authored all of the code. If you do this on work time make sure your employer is OK with this.

License

Unless specifically indicated otherwise in a file, files are licensed under the Apache 2.0 license, as can be found in: LICENSE

About

CoAP Java library

Topics

coapiotjavajava-coaplwm2mmbed

Resources

Readme
Activity
Custom properties

Stars

75 stars

Watchers

16 watching

Forks

32 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.