Vert.x:一个简单的Tcp客户端和服务端demo

1. 声明

当前内容主要为记录和学习使用Vert.x创建Tcp服务并实现通信的demo,当前内容参考官方文档

2. Server Demo

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Promise;
import io.vertx.core.Vertx;
import io.vertx.core.buffer.impl.BufferImpl;

public class TcpServer extends AbstractVerticle {

	@Override
	public void start(Promise<Void> startPromise) throws Exception {
		vertx.createNetServer().connectHandler(socket -> {
			socket.handler(buffer -> {
				String context = buffer.toString("utf-8");
				System.out.println("server received some bytes: " + buffer.length()+",context :"+context);
				BufferImpl bufferImpl = new BufferImpl();
				bufferImpl.appendBytes("你好世界......".getBytes());
				socket.write(bufferImpl);
			});
			socket.closeHandler(handler->{
				System.out.println("connect close :"+handler);
			});
		}).exceptionHandler(socket->{
			socket.printStackTrace();
		}).listen(8888).onSuccess(handler -> {
			System.out.println("tcp server start up in port 8888 success!");
		});
	}
	
	public static void main(String[] args) {
		Vertx vertx2 = Vertx.vertx();
		vertx2.deployVerticle(new TcpServer());
	}

}

3. Client Demo

import io.vertx.core.AbstractVerticle;
import io.vertx.core.Future;
import io.vertx.core.Promise;
import io.vertx.core.Vertx;
import io.vertx.core.buffer.impl.BufferImpl;
import io.vertx.core.net.NetClient;
import io.vertx.core.net.NetSocket;

public class TcpClient extends AbstractVerticle {

	@Override
	public void start(Promise<Void> startPromise) throws Exception {
		vertx
		.createNetClient()
		.connect(8888, "localhost")
		.onComplete(socket->{
			NetSocket result = socket.result();
			result.handler(buffer->{
				String content = buffer.toString("utf-8");
				System.out.println("client received len:"+buffer.length()+",content:"+content);
			});
			result.closeHandler(handler->{
				System.out.println("socket close....");
			});
		})
		.onSuccess(handler->{
			System.out.println("connect localhost:8888 tcp server success!");
			BufferImpl bufferImpl = new BufferImpl();
			bufferImpl.appendBytes("你好服务器!".getBytes());
			handler.write(bufferImpl);
			
		});
	}
	
	public static void main(String[] args) {
		Vertx vertx2 = Vertx.vertx();
		vertx2.deployVerticle(new TcpClient());
	}
	
}

4. 测试

开启服务器
在这里插入图片描述
开启客户端

在这里插入图片描述
在这里插入图片描述
测试成功

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值