Vert.x 3学习笔记---06

Writing TCP servers and clients 编写TCP服务端和客户端
使用vertx可以很简单的编写出无阻塞的tcp服务端和客户端。下面逐一来介绍。

Creating a TCP server

NetServer server = vertx.createNetServer();

Configuring a TCP server

可以使用NetServerOptions 来配置tcp服务端:

NetServerOptions options = new NetServerOptions().setPort(4321);
NetServer server = vertx.createNetServer(options);

Start the Server Listening

使用listen方法,让服务端开始监听进入的请求。

NetServer server = vertx.createNetServer();
server.listen();

或者使用指定端口和地址:

NetServer server = vertx.createNetServer();
server.listen(1234, "localhost");

不指定的情况下,地址默认使用0.0.0.0,端口默认下为0,如果为的0话,表示随机使用一个没有被占用的端口。

NetServer server = vertx.createNetServer();
server.listen(1234, "localhost", res -> {
  if (res.succeeded()) {
    System.out.println("Server is now listening!");
  } else {
    System.out.println("Failed to bind!");
  }
});

在listen方法后面设置一个handler参数,可以在监听成功后,执行handler。

Getting notified of incoming connections

当有客户端连接进来时,如果希望得到通知的话,可以如下:

NetServer server = vertx.createNetServer();
//设置客户端连接的handler
server.connectHandler(socket -> {
  // Handle the connection in here
});

Reading data from the socket

NetServer server = vertx.createNetServer();
//设置客户端连接的handler
server.connectHandler(socket -> {
  //设置读取数据的handler
  socket.handler(buffer -> {
    System.out.println("I received some bytes: " + buffer.length());
  });
});

Writing data to a socket

Buffer buffer = Buffer.buffer();
buffer.appendFloat(12.34f).appendInt(123);
socket.write(buffer);

// Write a string in UTF-8 encoding
socket.write("some data");

// Write a string using the specified encoding
socket.write("some data", "UTF-16");

Closed handler

当socket连接关闭时,可以注册一个handler来监听这个事件。

socket.closeHandler(v -> {
  System.out.println("The socket has been closed");
});

Handling exceptions

当socket出现异常时,可以使用exceptionHandler方法,注册一个handler来监听这个事件。

Event bus write handler

如果想通过event bus给socket发送消息,首先我们先通过writeHandlerID()方法获取socket注册在event bus上的handler,然后再使用此handler id给其发送消息。

Local and remote addresses

The local address of a NetSocket can be retrieved using localAddress.

The remote address, (i.e. the address of the other end of the connection) of a NetSocket can be retrieved using remoteAddress.

Sending files or resources from the classpath

如果需要发送文件,或者classpath下的资源,我们直接调用sendFile()方法。

socket.sendFile("myfile.dat");

Streaming sockets

Instances of NetSocket are also ReadStream and WriteStream instances so they can be used to pump data to or from other read and write streams.

Upgrading connections to SSL/TLS

A non SSL/TLS connection can be upgraded to SSL/TLS using upgradeToSsl.
The server or client must be configured for SSL/TLS for this to work correctly.

Closing a TCP Server

调用close方法来关闭一个tcp服务端,也可以给它注册一个handler来监听关闭的事件。

server.clos

你可能感兴趣的:(vertx,vert.x,server,tcp,java,nodejs)