Java备忘录
2018-04-25 本文已影响0人
管恺森
网络
-
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
方法。