日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenSSL的SSL/BIO_get_fd

發(fā)布時間:2025/3/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenSSL的SSL/BIO_get_fd 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

只要是用到了OpenSSL,總會碰到讓人心塞的事。
這次是SSL_get_fd。我用一種很簡單的方式創(chuàng)建了一個SSL對象,直接在這個對象上進行SSL的accept:

bio?=?BIO_new(BIO_s_accept()); BIO_set_accept_port(bio,?"1234"); BIO_do_accept(bio); SSL_set_bio(ssl,?bio,?bio); SSL_accept(ssl);

這樣就不必折騰討厭的sockaddr了。后來我想在和這個SSL對象關聯(lián)的底層socket上執(zhí)行 setsockopt,想當然的使用了SSL_get_fd/BIO_get_fd這個非常自明的API。到此為止非常棒。接下來就不爽了,我發(fā)現(xiàn) setsockiot最終操作的那個描述符是listnen套接字,而不是accept返回的那個套接字。這似乎在API層面上十分合理,畢竟bio的參 數(shù)就是一個BIO_s_accept,而和它關聯(lián)的就是一個listen套接字。想要正確的得到accept返回的讀寫socket描述符,你得這么寫:

BIO_get_fd(BIO_next(bio),?&sd);

問題是,你必須知道這個BIO stack是如何排列的才能寫出上面的代碼,做到如此最好的辦法就是看OpenSSL的源代碼。
?????? BIO的API設計就一定要設計成get/set_fd嗎?BIO就一定要和一個fd相關嗎?memory類型的BIO如果get fd的話,會返回怎么的錯誤嗎呢?既然BIO構成了一個疊加的IO stack,那么也許之有最下面的那個才會和一個UNIX fd相關聯(lián),那為何不直接返回最下面那個呢?


轉載于:https://blog.51cto.com/dog250/1592061

總結

以上是生活随笔為你收集整理的OpenSSL的SSL/BIO_get_fd的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。