Chinaunix首页 | 论坛 | 博客
  • 博客访问: 318681
  • 博文数量: 45
  • 博客积分: 2079
  • 博客等级: 上尉
  • 技术积分: 464
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-03 16:57
文章分类

全部博文(45)

文章存档

2015年(1)

2013年(1)

2012年(9)

2011年(2)

2010年(32)

分类:

2010-05-07 18:11:55

今天,复习了《SSL与TLS》第八章的内容,主要是使用select()实现多路I/O的部分。

    这里主要解决的问题是,当我们的应用要处理多个I/O时,有可能出现的死锁的问题(如该书8.8节所述),在JAVA中,使用多线程机制,可以gracefully处理这个问题,但是在*inux下,使用select去解决时,却会有些麻烦。主要是网络缓冲区和ssl缓冲区有可能出现的不一致的情况,在read时,书中给出的解决方案是通过SSL_pending()进行判断。我理解,pending情况发生的概率还是蛮低的,至少得满足如下条件:
1、ssl_read的值要小于网络缓冲区的长度;
2、没有后续的数据去唤醒select处理;
不知道我的理解是否完全正确,还需要进一步用代码去求证。

另外,网上相关的资料似乎不太多,openssl中不知有没有相关的例子,《SSL与TLS》这本书翻译的也不是让人太满意,翻来覆去的看不太明白,幸好找到了原作者的网站:,里边有相关的例子和描述,有兴趣的朋友可以参考,欢迎讨论。


阅读(2888) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

安何2010-05-25 19:05:51