Java TCP获取域名?

时间:2015-05-25 19:07:38

标签: java tcp

您如何从TCP连接获取域名?

因为我正在尝试制作代理类型的软件,但它必须检测域是什么,然后去它需要的地方。但是我不确定如何从客户端获取域名。

2 个答案:

答案 0 :(得分:1)

没有通用的方法从TCP连接获取目标域或主机名,因为连接仅由其目标IP地址而不是主机名定义,并且单个目标IP地址可能有多个名称。但是,虽然没有通用的方法从所有TCP连接获取目标名称,但可以在HTTP之上使用某些协议:

  • 如果是HTTP,您可能会查看包含目标主机名的HTTP Host标头,并且几乎所有HTTP堆栈(HTTP / 1.1都需要)设置。
  • 使用SSL时,如果客户端使用SNI(服务器名称指示),您可能会尝试从SSL握手中的初始ClientHello消息中提取主机名。所有现代浏览器都使用SNI,但是像IE8这样的旧浏览器并没有旧的Java,Python,Perl,Ruby ......应用程序。

答案 1 :(得分:0)

您可以使用以下代码段,该代码段将提供本地域名 -

try {
      InetAddress me = InetAddress.getLocalHost();
      String dottedQuad = me.getHostAddress();
      System.out.println("My address is " + dottedQuad);
 } catch (UnknownHostException e) {
      System.out.println("I'm sorry. I don't know my own address.");
 }