【求教】如何使用socket的非阻塞模式?

 我来答
伊藤Kg
2013-10-26 · 超过67用户采纳过TA的回答
知道答主
回答量:126
采纳率:0%
帮助的人:164万
展开全部
一般分为 多线程阻塞 非阻塞 / 单线程阻塞 /单一线程阻塞 非阻塞这三种 简单地说 每一个SS请求 serversocket 需要一个字节码缓冲区来读取和写入字节码 然后转换输出文本 理论上可以用一个非常大的buffer区来解决这个问题 但如果是第一种 多线程阻塞模式 一次只能读取规定大小的字节码 而并发连接一旦过多 处理内容过大 就会有严重的内存崩坏 也就是stackoverflow了~ Java1.5以后专门用一个 nio包来处理这个问题 python不了解~ java在NIO包中定义一个selecter类来循环监听SS 判断写入内容是否达到stack顶端 也就是outbonder字节码缓冲区外界 一旦达到外界 就发出一个信号signal 或者直接抛出IO异常 JDK的原话是这么写的:When you reach the end of a input stream * via a read() returning -1 or an IOException, we call * sslEngine.closeInbound() to signal to the sslEngine that no more * input will be available. * Application Data * src requestBB * | ^ * | | | * v | | * +----+-----|-----+----+ * | | | * | SSL|Engine | * wrap() | | | unwrap() * | OUTBOUND | INBOUND | * | | | * +----+-----|-----+----+ * | | ^ * | | | * v |
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式