【问题标题】:Can't get fd from tls.Conn无法从 tls.Conn 获取 fd
【发布时间】:2020-06-01 06:13:01
【问题描述】:

有没有办法从tls.Conn 获取文件描述符?

我正在尝试将 tls 添加到 epoll。但我在 tls.Conn 中找不到 fd。

【问题讨论】:

  • 目前不可能,但已提出issue
  • 我找到了解决方案。首先,接受一张网。康涅狄格州;二、获取它的fd并添加到epoll中;三、将net.Conn升级为tls.Conn。这可能吗?
  • @InasaXia:如果你有解决方案,你问什么是可能的?
  • 我在 tls.Conn 中添加了一个方法。 func (c *Conn) UnderlyingConn() net.Conn { return c.conn }

标签: go file-descriptor epoll


【解决方案1】:
 func FDFromTLSConn(conn tls.Conn) int {
    tcpConn := reflect.Indirect(reflect.ValueOf(conn)).FieldByName("conn")
    fdVal := tcpConn.FieldByName("fd")
    pfdVal := reflect.Indirect(fdVal).FieldByName("pfd")

    return int(pfdVal.FieldByName("Sysfd").Int())
   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-01
    相关资源
    最近更新 更多