如何从Java服务器通过xinetd的获取客户端IP?
题
我正在通过xinetd的超级服务器一个小的Java服务器。 我想获得的原始客户端IP,但我不能,因为流是xinetd的和Java(STIN /标准输出)之间。
是否有人知道如何获得客户端IP,头也不回xinetd的日志文件? (似乎是一个坏的溶液我)
谢谢!
解决方案
由于您所描述的情况,拖网xinetd的日志文件是你唯一的选择。
如果您的Java应用程序通过其标准输入和标准输出谈论到客户端,就没有办法了访问底层套接字的应用程序。事实上,我不认为你可以在任何语言做到这一点。
修改:其实,你很可能在C和C这样做++,因为他们暴露文件描述符(FDS),并有库API做使用FDS插座操作
但它不会在纯Java中工作。即使你可以深入到流内的FD对象与System.in
或System.out
相关的,我不认为Java类库用于使FD变成Socket
对象提供的API。要做到对FD的0和1,你需要求助于JNI和本地代码插座操作。
和作为评论者指出,如果真正的客户端是一个代理之后,客户端IP,你从插座中得到的将是代理服务器的IP。
其他提示
我想你可以打电话getpeername
在TCP套接字(而不是UDP),看到的史蒂文斯章4.10 。
不隶属于 StackOverflow