目录
BIO(二)、ServerSocket的accept()方法
accept()方法的源码
public Socket accept() throws IOException {
if (isClosed())
throw new SocketException("Socket is closed");
if (!isBound())
throw new SocketException("Socket is not bound yet");
Socket s = new Socket((SocketImpl) null);//--1>
implAccept(s);//--2>
return s;
}
1>、Socket((SocketImpl) null)
因为一个服务端可与多个客户进行交互,所以每次与客户建立连接都要创建一个新的Socket。
这里将Socket的impl置为null,后续会进行赋值。
2>、implAccept(s)
protected final void implAccept(Socket s) throws IOException {
SocketImpl si = null;//si是准备为newSocket的impl进行赋值,s是newSocket。
try {
if (s.impl == null)
s.setImpl()