微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 Julia 中的 Sockets.TCPSocket 对象获取客户端 IP 地址?

如何解决如何从 Julia 中的 Sockets.TCPSocket 对象获取客户端 IP 地址?

HTTP.jl 的文档中,HTTP.serve 函数一个可选的关键字参数 tcpisvalid::Function (::Tcpsocket) -> Bool,表示它可以用于

在处理请求之前检查接受的连接。例如实现源IP过滤、限速等

如何从 Tcpsocket 对象获取客户端 IP 地址?

解决方法

您可以使用函数 Sockets.getpeername。根据 Sockets 文档,函数签名是:

getpeername(sock::TCPSocket) -> (IPAddr,UInt16)

描述是:

获取给定套接字连接到的远程端点的 IP 地址和端口。仅对连接的 TCP 套接字有效。

因此,例如,如果您使用以下代码运行您的简单服务器...

HTTP.serve(app,"127.0.0.1",8081; tcpisvalid=sock -> begin
    host,port = Sockets.getpeername(sock)
    println("Request from... $host:$port")
    true
end)

然后在一个单独的终端运行...

$ curl http://localhost:8081/

您的 Julia 服务器的输出将是...

Request from... 127.0.0.1:40958

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。