如何解决如何从 Julia 中的 Sockets.TCPSocket 对象获取客户端 IP 地址?
在 HTTP.jl
的文档中,HTTP.serve
函数有一个可选的关键字参数 tcpisvalid::Function (::Tcpsocket) -> Bool
,表示它可以用于
在处理请求之前检查接受的连接。例如实现源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 举报,一经查实,本站将立刻删除。