URL构造函数中的端口

时间:2012-07-05 06:07:04

标签: java

我想检查在URL构造器中未明确指定端口时使用的端口。所以这是一个代码。

 URL url = new URL("http://www.ietf.org/rfc/rfc2396.txt");
    System.out.println("URL :"+url.getPort());

getPort()返回-1。它表示我没有设置端口,这就是grtPort()返回-1值的原因。

java.net.URL

的java文档中
  

“如果未在URL中指定端口,则为默认端口   而是使用协议。 http的默认端口是80。“

然后在上面的情况下它应该返回80默认端口。不是吗? 但事实并非如此。 那么我怎么知道哪个端口用于连接?

4 个答案:

答案 0 :(得分:2)

请参阅此示例,为其各自的服务提供默认端口。我在这里显示了http和ftp。

例如:

public class Test {

public static void main(String[] args){



try {
System.out.println(new URL("http://www.ietf.org/rfc/rfc2396.txt").getDefaultPort());

System.out.println(new URL("ftp://www.ietf.org/rfc/rfc2396.txt").getDefaultPort());


        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

答案 1 :(得分:0)

您想要url.getDefaultPort()

答案 2 :(得分:0)

要获得默认底池, java.net.URL

中有一个方法getDefaultPort()

使用此

int port  = new URL("http://www.ietf.org/rfc/rfc2396.txt").getDefaultPort();

答案 3 :(得分:0)

这取决于您发送的请求类型。

不同协议的默认端口不同。

20 & 21: File Transfer Protocol (FTP)
22: Secure Shell (SSH)
23: Telnet remote login service
25: Simple Mail Transfer Protocol (SMTP)
53: Domain Name System (DNS) service
80: Hypertext Transfer Protocol (HTTP) used in the World Wide Web
110: Post Office Protocol (POP3)
119: Network News Transfer Protocol (NNTP)
143: Internet Message Access Protocol (IMAP)
161: Simple Network Management Protocol (SNMP)
443: HTTP Secure (HTTPS)