类 DataChannel

  • 所有已实现的接口:
    java.lang.Runnable

    public class DataChannel
    extends java.lang.Thread
    数据通道,负责收发数据。
    当收到数据或出现异常时会通过 DataChannel.Listener 回调给使用者。
    使用者也可以通过send(byte[])给对端发送数据,注意send动作是在调用者线程里执行,不能在主线程里调用。
    1.创建和打开数据通道(开始接收数据): 
     DataChannel.Listener listener = new DataChannel.Listener() {
          public void onReceive(byte[] buffer, int len) {
              // 从监听的端口接收到数据
          }
          public void onException(Exception e) {
              // 数据接收过程中出现异常
          }
      };
    
      dataChannel = new DataChannel(listener, DEST_PORT);
      dataChannel.open();
     
     
    2.发送数据: (发往上一个收到的数据的SocketAddress)
     dataChannel.send("data to be sent.".getBytes(StandardCharsets.UTF_8));
     
     
    • 嵌套类概要

      嵌套类 
      修饰符和类型 说明
      static interface  DataChannel.Listener
      DataChannel 接收数据的监听器
      • 从类继承的嵌套类/接口 java.lang.Thread

        java.lang.Thread.State, java.lang.Thread.UncaughtExceptionHandler
    • 字段概要

      • 从类继承的字段 java.lang.Thread

        MAX_PRIORITY, MIN_PRIORITY, NORM_PRIORITY
    • 方法概要

      所有方法 实例方法 具体方法 
      修饰符和类型 方法 说明
      void close()
      关闭数据通道(停止收发数据)
      void open()
      打开数据通道(开始接收数据)
      void run()  
      boolean send​(byte[] data)
      向上一个收到的数据的SocketAddress)地址发送数据data
      • 从类继承的方法 java.lang.Thread

        activeCount, checkAccess, clone, countStackFrames, currentThread, dumpStack, enumerate, getAllStackTraces, getContextClassLoader, getDefaultUncaughtExceptionHandler, getId, getName, getPriority, getStackTrace, getState, getThreadGroup, getUncaughtExceptionHandler, holdsLock, interrupt, interrupted, isAlive, isDaemon, isInterrupted, join, join, join, onSpinWait, resume, setContextClassLoader, setDaemon, setDefaultUncaughtExceptionHandler, setName, setPriority, setUncaughtExceptionHandler, sleep, sleep, start, stop, suspend, toString, yield
      • 从类继承的方法 java.lang.Object

        equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • 构造器详细资料

      • DataChannel

        public DataChannel​(DataChannel.Listener listener,
                           int localPort)
                    throws java.net.SocketException
        构造函数
        参数:
        listener - 接收数据的监听器,不能为null
        localPort - 数据通道监听的本地端口号
        抛出:
        java.net.SocketException - if the socket could not be opened, or the socket could not bind to the specified local port.
        java.lang.SecurityException - if a security manager exists and its checkListen method doesn't allow the operation.
    • 方法详细资料

      • send

        public boolean send​(byte[] data)
                     throws java.io.IOException
        向上一个收到的数据的SocketAddress)地址发送数据data。 如果没有收到过数据,则无法发送,会返回false。 注意send动作是在调用者线程里执行,不能在主线程中调用。
        参数:
        data - 需要发送给对端的数据,参数不能为null
        返回:
        false如果没有收到过对端数据,没有对端地址。true其他情况。
        抛出:
        java.io.IOException - IO异常
      • open

        public void open()
        打开数据通道(开始接收数据)
      • run

        public void run()
        指定者:
        run 在接口中 java.lang.Runnable
        覆盖:
        run 在类中 java.lang.Thread
      • close

        public void close()
        关闭数据通道(停止收发数据)