为什么当有新的就绪通道的时候,迭代器返回的第一个键是ServerSocketChannel的,而没有新的就绪通道时,迭代器返回第一个键总是SocketChannel的?
SocketChannel是用于TCP网络连接的套接字接口,它一般用来作为客户端的套接字,它有点类似于java中的Socket类,我们可以用它的read方法来读取数据,也可以用它的write方法来写入数据;
ServerSocketChannel是用于监听TCP连接的通道,它类似于java网络编程中的ServerSocket,我们可以调用它的open方法来打开一个通道,然后调用其bind()方法来绑定到某个地址上,然后通过accept()方法每次获取一个客户端的连接;
当有新的就绪通道的时候,说明已经建立连接,可以接收请求,返回是的ServerSocketChannel,没有新的就绪通道,没有建立连接时就返回SocketChannel;