论坛首页 Java企业应用论坛

被忽悠:0号端口提供IIS的80端口Hello World服务?

浏览 18969 次
该帖已经被评为良好帖
作者 正文
   发表时间:2007-01-08  
kdedik说的对,我的netstat -a | find ":0" 这样找的结果0并不是我们想知道的0端口服务,而是在监听所有外来的连接。

总结一下:
1、http://localhost:0/ 访问这个其实就是访问这个 http://localhost/http://locahost:80/

2、new ServerSocket(0);此时并不是说真正用0号端口,而是系统随机启用一个空闲的端口给你用,一般端口是大于1024号的,因为小于1024号端口为系统保留端口,所以boin说是0-1024应当有误。我在Windows与Solaris上面测试过。

可以做个测试
for(;;)
{
    serverSocket = new ServerSocket(0);
    portIndeed = serverSocket.getLocalPort();
    System.out.println("portIndeed:" + portIndeed);
}

就可以得到真正的portIndeed的,而且可以一直new ServerSocket(0);

看了ServerSocket的源码,有如下:
	if (port < 0 || port > 0xFFFF)
	    throw new IllegalArgumentException(
		       "Port value out of range: " + port);


有效传入端口号范围为0 <= portIndeed <= 65535
1 请登录后投票
   发表时间:2007-01-08  
感谢指出错误:P
并学习。
0 请登录后投票
   发表时间:2007-01-12  
YuLimin 写道
说实话,我是完全被忽悠了。

但忽悠过后我知道

1、http://localhost:0/ 访问这个其实就是访问这个 http://localhost/http://locahost:80/

2、0号端口说是系统的无效端口,但是还是很不明白为何Java Socket的程序却可以无休止地创建使用0号端口,建立Socket,而且不报错。别的端口如果被占用后是会异常的。


Java socket 指定0端口就是不指定端口,而是采用系统分配一个端口。
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics