yuhan506 2015-10-14 11:25 采纳率: 0%
浏览 1527

android 开发 java写的 tcp 通信库,注册选择器时异常!跪求java高手指点!!!

public void initialize() throws IOException
{
boolean done = false;

    try
    {
        Log.e(TAG,"SocketChannel.open:IP:["+hostIp+"Port:"+hostListenningPort+"].");
        // 打开监听信道并设置为非阻塞模式
        socketChannel = SocketChannel.open(new InetSocketAddress(hostIp,
                hostListenningPort));

        if (socketChannel != null)
        {

            socketChannel.socket().setTcpNoDelay(false);
            socketChannel.socket().setKeepAlive(true);
            // 设置 读socket的timeout时间
            socketChannel.socket().setSoTimeout(
                    Const.SOCKET_READ_TIMOUT);
           // 将选择器绑定到监听信道,只有非阻塞信道才可以注册选择器
            socketChannel.configureBlocking(false);

            // 打开并注册选择器到信道
            Log.e(TAG,"ready to open selector success.");
            selector = Selector.open();
            if (selector != null)
            {
                Log.e(TAG,"open selector success.");
                socketChannel.register(selector, SelectionKey.OP_READ|SelectionKey.OP_WRITE|SelectionKey.OP_ACCEPT);
                done = true;
            }
        }
    } catch(Exception ex)
    {
        Log.e(TAG,"Create SocketChannel error msg:!"+ex.getMessage());
    }
    finally
    {
        Log.e(TAG,"Create SocketChannel catch error!");
        if (!done && selector != null)
        {
            selector.close();
        }
        if (!done)
        {
            socketChannel.close();
        }
    }
}

图片说明

  • 写回答

1条回答 默认 最新

  • Exploring1024 2015-10-15 03:22
    关注

    这个还没研究过,不知道你是这样的需求

    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?