java nio改造io,java – 将NIO与IO混合

通常,您有一个绑定的tcp端口和几个连接.至少通常有更多连接作为绑定端口.我的情况不同:我想绑定很多端口,通常没有(或至少很少)连接.

所以我想使用NIO来接受传入的连接.

但是,我需要将接受的连接传递给现有的jsch ssh库.这需要IO套接字而不是NIO套接字,它会为每个连接产生一个(或两个)线程.但这对我来说没问题.

现在,我认为以下几行会产生相同的结果:

Socket a = serverSocketChannel.accept().socket();

Socket b = serverSocketChannel.socket().accept();

SocketChannel channel = serverSocketChannel.accept();

channel.configureBlocking( true );

Socket c = channel.socket();

Socket d = serverSocket.accept();

但是,返回的套接字的getInputStream()和getOutputStream()函数似乎工作不同.只有在使用最后一次调用接受套接字时,jsch才能使用它.在前三个案例中,它失败了(我很抱歉:我不知道为什么).

那么有没有办法转换这样的套接字?

最佳答案 从SocketChannel获得的套接字返回的输入和输出流在某些点在通道内部同步.因此,您不能将它们用于SSH等全双工协议,因为系统会锁定.同样适用于通过Channels类从通道转换的流(这是第一种情况相当).

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值