2012-12-13 23 views
8

Đây là một câu hỏi khá thẳng về phía trước, nhưng tôi đã thấy cần phải hủy đăng ký một bộ chọn nhìn ra kênh ổ cắm của tôi cho java.Có cách nào để hủy đăng ký bộ chọn trên kênh ổ cắm

SocketChannel client = myServer.accept(); //forks off another client socket 
client.configureBlocking(false);//this channel takes in multiple request 
client.register(mySelector, SelectionKey.OP_READ | SelectionKey.OP_WRITE);//changed from r to rw 

đâu tôi có thể sau này trong một cái gì đó gọi chương trình như

client.deregister(mySelector); 

Và đó chọn sẽ không còn bắt phím dữ liệu cho rằng kênh socket. Điều này sẽ làm cho cuộc sống dễ dàng hơn nhiều đối với tôi với thiết kế máy chủ/khách hàng của tôi.

Trả lời

17

Gọi cancel() trên phím chọn:

SelectionKey key = client.register(mySelector, 
    SelectionKey.OP_READ | SelectionKey.OP_WRITE); 
... 
key.cancel(); 

hoặc

... 
SelectionKey key = client.keyFor(mySelector); 
key.cancel(); 
+0

Hoặc bạn có thể làm 'client.close()' là tốt. –

Các vấn đề liên quan