繁体   English   中英

Java TCP获取域名?

[英]Java TCP Get Domain Name?

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

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

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

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

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

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.");
 }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM