4

当 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 doc

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

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

4

4 回答 4

3

请参阅此示例为其各自服务提供默认端口。我在这里展示了 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();
        }

    }

}
于 2012-07-05T07:35:11.123 回答
1

要获得默认罐,getDefaultPort()java.net.URL类中有一个方法

用这个

int port  = new URL("http://www.ietf.org/rfc/rfc2396.txt").getDefaultPort();
于 2012-07-05T06:39:52.190 回答
0

你想要url.getDefaultPort()

于 2012-07-05T06:31:43.517 回答
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)
于 2012-07-05T06:59:19.873 回答