阿牛 发表于 2018-10-19 09:00:00

vertx写udp server

import org.vertx.java.core.AsyncResult;  
import org.vertx.java.core.AsyncResultHandler;
  
import org.vertx.java.core.Handler;
  
import org.vertx.java.core.buffer.Buffer;
  
import org.vertx.java.core.datagram.DatagramPacket;
  
import org.vertx.java.core.datagram.DatagramSocket;
  
import org.vertx.java.core.datagram.InternetProtocolFamily;
  
import org.vertx.java.core.logging.Logger;
  
import org.vertx.java.platform.Verticle;

  
public>  Logger logger;
  private static final int TS_SIZE = 8;
  private static final int CMD_SIZE = 1;
  private static final int UID_SIZE = 4;
  private static final int TS_IDX = 0;
  private static final int CMD_IDX = TS_SIZE;
  private static final int UID_IDX = TS_SIZE + CMD_SIZE;
  private static final int CID_IDX = TS_SIZE + CMD_SIZE + UID_SIZE;
  public void start() {
  logger = container.logger();
  final DatagramSocket socket = vertx
  .createDatagramSocket(InternetProtocolFamily.IPv4);
  socket.listen("0.0.0.0", 8888,
  new AsyncResultHandler() {
  public void handle(AsyncResult asyncResult) {
  if (asyncResult.succeeded()) {
  socket.dataHandler(new Handler() {
  public void handle(DatagramPacket packet) {
  Buffer buf = packet.data();//bu
  logger.info(buf.length());
  int ts = buf.getInt(TS_IDX);
  byte cmd = buf.getByte(CMD_IDX);
  int uid = buf.getInt(UID_IDX); // 客服端已经替换为网络字节序
  int cid = buf.getInt(CID_IDX);
  logger.info("ts:" + ts + ",cmd:" + cmd
  + ",uid:" + uid + ",cid:" + cid);
  }
  });
  } else {
  logger.warn("Listen failed", asyncResult.cause());
  }
  }
  });
  }
  
}


页: [1]
查看完整版本: vertx写udp server