本例基于 java 演示

### 1、引入依赖包

选一个基于 BIO 实现的最小依赖（100kb 左右）。更多传输适配包见：[《Socket.D - Java 开发》](/article/693)

```xml
<dependency>
    <groupId>org.noear</groupId>
    <artifactId>socketd-transport-java-tcp</artifactId>
    <version>2.5.20</version>
</dependency>
```


### 2、编写服务端

监听消息，不分事件只做一个简单的打印。

```java
public class ServerDemo {
    public static void main(String[] args) throws Throwable {
        //::启动服务端
        SocketD.createServer("sd:tcp")
                .config(c -> c.port(8602))
                .listen(new SimpleListener(){
                    @Override
                    public void onMessage(Session session, Message message) throws IOException {
                        //打印
                        System.out.println(message);
                    }
                })
                .start();
    }
}
```

### 3、编写客户端

打开会话后，发送一个 "Hello wrold!" 的消息包。并通过元信息，申明用户是 "noear"

```java
public class ClientDemo {
    public static void main(String[] args) throws Throwable {
        //::打开客户端会话
        ClientSession session = SocketD.createClient("sd:tcp://127.0.0.1:8602/?token=1b0VsGusEkddgr3d")
                .open();


        Entity entity = new StringEntity("Hello wrold!").metaPut("user","noear");
        
        //发送
        session.send("/demo", entity);
        //发送并请求（且，等待答复）
        Entity reply = session.sendAndRequest("/demo", entity).await();
        //发送并订阅（且，接收答复流）
        session.sendAndSubscribe("/demo", entity).thenReply(reply->{
            
        });
    }
}
```


### 4、运行

先运行 `ServerDemo::main` 函数。启动完成后，再运行 `ClientDemo::main`。
