我也懂得不多,不过,在发送的时候应该有段
while(true){
int n=selector.select();//获得IO准备就绪的数量
if(n==0)
{continue;}
后续处理codes
}
所以在这里应该catch IOException
而在Socket的建立的时候,捕获的是SocketException。网络编程我懂得也不多,看看后边的高手回答吧,这是我今天坐车时昏头昏脑看的。
while(true){
int n=selector.select();//获得IO准备就绪的数量
if(n==0)
{continue;}
后续处理codes
}
所以在这里应该catch IOException
而在Socket的建立的时候,捕获的是SocketException。网络编程我懂得也不多,看看后边的高手回答吧,这是我今天坐车时昏头昏脑看的。
在这里捕获就可以了的啊
selector.select();
是要SocketChannel注册了类似sc.register(selector,SelectionKey.OP_READ,request);这样读写或者接受的key的时候,才能进入selector
取消注册的时候SelectionKey key。cancel()
而在异步模式下,SocketChannel.write(ByteBuffer)只是将数据放到Socket的缓冲区,然后马上就返回了,并不会等到数据全部发送到对方。如果write方法已经返回,而socket在发送的时候出错,我怎么知道它出错了?