该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间: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 |
|
返回顶楼 | |
发表时间:2007-01-08
感谢指出错误:P
并学习。 |
|
返回顶楼 | |
发表时间:2007-01-12
YuLimin 写道 说实话,我是完全被忽悠了。
但忽悠过后我知道 1、http://localhost:0/ 访问这个其实就是访问这个 http://localhost/ 或 http://locahost:80/ 2、0号端口说是系统的无效端口,但是还是很不明白为何Java Socket的程序却可以无休止地创建使用0号端口,建立Socket,而且不报错。别的端口如果被占用后是会异常的。 Java socket 指定0端口就是不指定端口,而是采用系统分配一个端口。 |
|
返回顶楼 | |