精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
openssl不但是密码库,还是通信库,本身就可以做通信。openssl也是HTTPS的基础,在Windows下的很多软件都用了openssl的代码。
锐英源研究过openssl的最新版本和一些历史版本,用它开发过商业软件产品,翻译过它的大量英语资料,经常在openssl的开发邮件列表里查找相关知识点,欢迎对此开源代码进行学习合作和开发合作。
锐英源在openssl的主要研究成果点有:
1、安全通信平台的开发
2、密码库的使用
3、证书的创建和使用
SSL_read可以读取通信数据,但是在非阻塞状态下使用时,没数据时会阻塞,为了在有数据状态再读,需要用select判断状态,下面列出获取socket句柄的代码和进行select的代码,供大家参考提高。
BIO_get_fd(sbio, &fdSocket);//sbio是BIO*类型,fdSocket是int类型可以代表一个socket句柄
FD_ZERO(&connectionfds);
FD_SET(fdSocket, &connectionfds);//准备select使用的FDSET timeout.tv_usec = 0;
timeout.tv_sec = 10;
memcpy(&fdcur,&connectionfds,sizeof(fdcur));//select后fdset会失效,所以先用好的fdset来拷贝给当前用的
nRet = select(fdSocket + 1, &fdcur, NULL,NULL, &timeout);//在读参数位置使用fdset
if(nRet>0)//有读状态的socket个数,则调用读取
{
len=SSL_read(ssl,tmpbuf,1024);
if(len>0) break;
}
openssl的编译需要信赖一些其它库,在编译不出来时,可以用别人编译好的库来使用,网上一般能找到,找的时候注意是32位还是64位,注意区分。这一般能满足常用开发要求,节省了研究编译的精力。