代码很简单:import java.nio.channels.Selector;
import java.nio.channels.spi.AbstractSelector;public class test
{
public test(){
} public static void main( String argc[] ){
for( int i = 0 ; i < 90000 ;i++ ){
try{
Selector sel = Selector.open(); sel.close(); }catch( Exception e ){
e.printStackTrace();
return;
}
System.out.println( "i:"+i );
}
}
}
jdk1.5
jdk1.6 均测试过
在Windows下报异常:
java.io.IOException: Unable to establish loopback connection
at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:106)
at java.security.AccessController.doPrivileged(Native Method)
at sun.nio.ch.PipeImpl.<init>(PipeImpl.java:122)
at sun.nio.ch.SelectorProviderImpl.openPipe(SelectorProviderImpl.java:2
)
at java.nio.channels.Pipe.open(Pipe.java:133)
at sun.nio.ch.WindowsSelectorImpl.<init>(WindowsSelectorImpl.java:105)
at sun.nio.ch.WindowsSelectorProvider.openSelector(WindowsSelectorProvi
er.java:26)
at java.nio.channels.Selector.open(Selector.java:209)
at test.main(test.java:11)
Caused by: java.io.IOException: 您的主机中的软件放弃了一个已建立的连接。
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:33)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:104)
at sun.nio.ch.IOUtil.write(IOUtil.java:75)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:334)
at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:83)
... 8 more同时发现有很多自己连接的tcp连接,通过操作系统管理命令netstat -an可以看见
TCP 127.0.0.1:1919 127.0.0.1:1920 TIME_WAIT
TCP 127.0.0.1:1921 127.0.0.1:1922 TIME_WAIT
TCP 127.0.0.1:1923 127.0.0.1:1924 TIME_WAIT
TCP 127.0.0.1:1927 127.0.0.1:1928 TIME_WAIT
TCP 127.0.0.1:1929 127.0.0.1:1930 TIME_WAIT
TCP 127.0.0.1:1931 127.0.0.1:1932 TIME_WAIT
TCP 127.0.0.1:1935 127.0.0.1:1936 TIME_WAIT
TCP 127.0.0.1:1939 127.0.0.1:1940 TIME_WAIT
TCP 127.0.0.1:1941 127.0.0.1:1942 TIME_WAIT
TCP 127.0.0.1:1949 127.0.0.1:1950 TIME_WAIT
TCP 127.0.0.1:1951 127.0.0.1:1952 TIME_WAIT
TCP 127.0.0.1:1959 127.0.0.1:1960 TIME_WAIT
TCP 127.0.0.1:1961 127.0.0.1:1962 TIME_WAIT
TCP 127.0.0.1:1963 127.0.0.1:1964 TIME_WAIT
TCP 127.0.0.1:1969 127.0.0.1:1970 TIME_WAIT
TCP 127.0.0.1:1977 127.0.0.1:1978 TIME_WAIT
TCP 127.0.0.1:1979 127.0.0.1:1980 TIME_WAIT
TCP 127.0.0.1:1985 127.0.0.1:1986 TIME_WAIT
TCP 127.0.0.1:1993 127.0.0.1:1994 TIME_WAIT
TCP 127.0.0.1:2001 127.0.0.1:2002 TIME_WAIT
TCP 127.0.0.1:2005 127.0.0.1:2006 TIME_WAIT
TCP 127.0.0.1:2009 127.0.0.1:2010 TIME_WAIT
TCP 127.0.0.1:2011 127.0.0.1:2012 TIME_WAIT
TCP 127.0.0.1:2047 127.0.0.1:2048 TIME_WAIT在linux下这段程序执行正常。难道这就是所谓java 跨平台????
import java.nio.channels.spi.AbstractSelector;public class test
{
public test(){
} public static void main( String argc[] ){
for( int i = 0 ; i < 90000 ;i++ ){
try{
Selector sel = Selector.open(); sel.close(); }catch( Exception e ){
e.printStackTrace();
return;
}
System.out.println( "i:"+i );
}
}
}
jdk1.5
jdk1.6 均测试过
在Windows下报异常:
java.io.IOException: Unable to establish loopback connection
at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:106)
at java.security.AccessController.doPrivileged(Native Method)
at sun.nio.ch.PipeImpl.<init>(PipeImpl.java:122)
at sun.nio.ch.SelectorProviderImpl.openPipe(SelectorProviderImpl.java:2
)
at java.nio.channels.Pipe.open(Pipe.java:133)
at sun.nio.ch.WindowsSelectorImpl.<init>(WindowsSelectorImpl.java:105)
at sun.nio.ch.WindowsSelectorProvider.openSelector(WindowsSelectorProvi
er.java:26)
at java.nio.channels.Selector.open(Selector.java:209)
at test.main(test.java:11)
Caused by: java.io.IOException: 您的主机中的软件放弃了一个已建立的连接。
at sun.nio.ch.SocketDispatcher.write0(Native Method)
at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:33)
at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:104)
at sun.nio.ch.IOUtil.write(IOUtil.java:75)
at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:334)
at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:83)
... 8 more同时发现有很多自己连接的tcp连接,通过操作系统管理命令netstat -an可以看见
TCP 127.0.0.1:1919 127.0.0.1:1920 TIME_WAIT
TCP 127.0.0.1:1921 127.0.0.1:1922 TIME_WAIT
TCP 127.0.0.1:1923 127.0.0.1:1924 TIME_WAIT
TCP 127.0.0.1:1927 127.0.0.1:1928 TIME_WAIT
TCP 127.0.0.1:1929 127.0.0.1:1930 TIME_WAIT
TCP 127.0.0.1:1931 127.0.0.1:1932 TIME_WAIT
TCP 127.0.0.1:1935 127.0.0.1:1936 TIME_WAIT
TCP 127.0.0.1:1939 127.0.0.1:1940 TIME_WAIT
TCP 127.0.0.1:1941 127.0.0.1:1942 TIME_WAIT
TCP 127.0.0.1:1949 127.0.0.1:1950 TIME_WAIT
TCP 127.0.0.1:1951 127.0.0.1:1952 TIME_WAIT
TCP 127.0.0.1:1959 127.0.0.1:1960 TIME_WAIT
TCP 127.0.0.1:1961 127.0.0.1:1962 TIME_WAIT
TCP 127.0.0.1:1963 127.0.0.1:1964 TIME_WAIT
TCP 127.0.0.1:1969 127.0.0.1:1970 TIME_WAIT
TCP 127.0.0.1:1977 127.0.0.1:1978 TIME_WAIT
TCP 127.0.0.1:1979 127.0.0.1:1980 TIME_WAIT
TCP 127.0.0.1:1985 127.0.0.1:1986 TIME_WAIT
TCP 127.0.0.1:1993 127.0.0.1:1994 TIME_WAIT
TCP 127.0.0.1:2001 127.0.0.1:2002 TIME_WAIT
TCP 127.0.0.1:2005 127.0.0.1:2006 TIME_WAIT
TCP 127.0.0.1:2009 127.0.0.1:2010 TIME_WAIT
TCP 127.0.0.1:2011 127.0.0.1:2012 TIME_WAIT
TCP 127.0.0.1:2047 127.0.0.1:2048 TIME_WAIT在linux下这段程序执行正常。难道这就是所谓java 跨平台????
同理,在linux下则是需要与自己建立的管道。
发生“java.io.IOException: Unable to establish loopback connection”,可能是你的防火墙挡住了。请确认系统能够自由的建立TCP联接。