+ * This method is intended to be overridden.
+ *
+ * @param address the IP address and port, if null the connector is bound to an ephemeral port on the wildcard
+ * address
+ * @param coapConfig the Configuration
+ * @return the {@link Connector} used for unsecured {@link CoapEndpoint}
+ */
+ protected Connector createUnsecuredConnector(InetSocketAddress address, Configuration coapConfig) {
+ return new TcpClientConnector(coapConfig);
+ }
+
+ @Override
+ public IdentityHandler createIdentityHandler() {
+ // TODO TCP : maybe we need a more specific one
+ return new DefaultCoapIdentityHandler();
+ }
+
+ @Override
+ public ExceptionTranslator createExceptionTranslator() {
+ // TODO TCP : maybe we need a more specific one
+ return new DefaultExceptionTranslator();
+ }
+
+ @Override
+ public CaliforniumConnectionController createConnectionController() {
+ return new CaliforniumConnectionController() {
+ @Override
+ public void forceReconnection(Endpoint endpoint, ServerIdentity identity, boolean resume) {
+ // no connection in coap, so nothing to do;
+ }
+ };
+ }
+}
diff --git a/leshan-client-cf/src/main/java/org/eclipse/leshan/client/californium/endpoint/coaptcp/CoapTcpClientProtocolProvider.java b/leshan-client-cf/src/main/java/org/eclipse/leshan/client/californium/endpoint/coaptcp/CoapTcpClientProtocolProvider.java
new file mode 100644
index 0000000000..1eb00bdf68
--- /dev/null
+++ b/leshan-client-cf/src/main/java/org/eclipse/leshan/client/californium/endpoint/coaptcp/CoapTcpClientProtocolProvider.java
@@ -0,0 +1,55 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Sierra Wireless and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * and Eclipse Distribution License v1.0 which accompany this distribution.
+ *
+ * The Eclipse Public License is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.html.
+ *
+ * Contributors:
+ * Sierra Wireless - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.leshan.client.californium.endpoint.coaptcp;
+
+import java.net.InetSocketAddress;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.californium.core.config.CoapConfig;
+import org.eclipse.californium.elements.config.Configuration;
+import org.eclipse.californium.elements.config.Configuration.ModuleDefinitionsProvider;
+import org.eclipse.californium.elements.config.SystemConfig;
+import org.eclipse.californium.elements.config.TcpConfig;
+import org.eclipse.californium.elements.config.UdpConfig;
+import org.eclipse.leshan.client.californium.endpoint.CaliforniumClientEndpointFactory;
+import org.eclipse.leshan.client.californium.endpoint.ClientProtocolProvider;
+import org.eclipse.leshan.core.endpoint.Protocol;
+
+public class CoapTcpClientProtocolProvider implements ClientProtocolProvider {
+
+ @Override
+ public Protocol getProtocol() {
+ return Protocol.COAP_TCP;
+ }
+
+ @Override
+ public void applyDefaultValue(Configuration configuration) {
+ configuration.set(CoapConfig.MAX_ACTIVE_PEERS, 10);
+ configuration.set(CoapConfig.PROTOCOL_STAGE_THREAD_COUNT, 1);
+ }
+
+ @Override
+ public List
+ * This method is intended to be overridden.
+ *
+ * @param address the IP address and port, if null the connector is bound to an ephemeral port on the wildcard
+ * address
+ * @param coapConfig the Configuration
+ * @return the {@link Connector} used for unsecured {@link CoapEndpoint}
+ */
+ protected Connector createUnsecuredConnector(InetSocketAddress address, Configuration coapConfig) {
+ return new TcpServerConnector(address, coapConfig);
+ }
+
+ @Override
+ public IdentityHandler createIdentityHandler() {
+ // TODO TCP : maybe we need a more specific one
+ return new DefaultCoapIdentityHandler();
+ }
+
+ @Override
+ public ExceptionTranslator createExceptionTranslator() {
+ // TODO TCP : maybe we need a more specific one
+ return new DefaultExceptionTranslator();
+ }
+}
diff --git a/leshan-server-cf/src/main/java/org/eclipse/leshan/server/californium/endpoint/coaptcp/CoapTcpServerProtocolProvider.java b/leshan-server-cf/src/main/java/org/eclipse/leshan/server/californium/endpoint/coaptcp/CoapTcpServerProtocolProvider.java
new file mode 100644
index 0000000000..3c83b5c4f1
--- /dev/null
+++ b/leshan-server-cf/src/main/java/org/eclipse/leshan/server/californium/endpoint/coaptcp/CoapTcpServerProtocolProvider.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2022 Sierra Wireless and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * and Eclipse Distribution License v1.0 which accompany this distribution.
+ *
+ * The Eclipse Public License is available at
+ * http://www.eclipse.org/legal/epl-v20.html
+ * and the Eclipse Distribution License is available at
+ * http://www.eclipse.org/org/documents/edl-v10.html.
+ *
+ * Contributors:
+ * Sierra Wireless - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.leshan.server.californium.endpoint.coaptcp;
+
+import java.net.InetSocketAddress;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.californium.core.config.CoapConfig;
+import org.eclipse.californium.elements.config.Configuration;
+import org.eclipse.californium.elements.config.Configuration.ModuleDefinitionsProvider;
+import org.eclipse.californium.elements.config.SystemConfig;
+import org.eclipse.californium.elements.config.TcpConfig;
+import org.eclipse.californium.elements.config.UdpConfig;
+import org.eclipse.leshan.core.endpoint.EndpointUriUtil;
+import org.eclipse.leshan.core.endpoint.Protocol;
+import org.eclipse.leshan.server.californium.endpoint.CaliforniumServerEndpointFactory;
+import org.eclipse.leshan.server.californium.endpoint.ServerProtocolProvider;
+
+public class CoapTcpServerProtocolProvider implements ServerProtocolProvider {
+
+ @Override
+ public Protocol getProtocol() {
+ return Protocol.COAP_TCP;
+ }
+
+ @Override
+ public void applyDefaultValue(Configuration configuration) {
+ }
+
+ @Override
+ public List