网络
Socket是对客户端进行网络通信的封装;ServerSocket是对服务端网络通信的封装。ServerSocket的accept()方法会阻塞,是调用了native方法。如果是在mac下,本质是调用了java.net.PlainSocketImpl类的native方法native void socketAccept(SocketImpl s),查看openjdk1.7的源码,/solaris/native/java/net/PlainSocketImpl.c中的Java_java_net_PlainSocketImpl_socketAccept方法中,有for (;;)循环,会一直循环直到连接上、超时或异常。Socket的connect方法也是调用了native的方法。socket.getInputStream()会分别返回SocketInputStream类,继承FileInputStream。它的read相关的方法均会调用native的socketRead0方法。socket.getOutputStream()会分别返回SocketOutputStream类,继承FileOutputStream。它的write相关的方法均会调用native的socketWrite0方法。