-3
我試圖製作多線程服務器應用程序,它可以與100個或更多客戶端通信。爲了避免套接字和併發編程,我使用了nio.Selector。它正在工作,但我不確定這是最好的解決方案。我應該如何提出這樣的申請? 這裏是我的服務器部分:多線程應用程序
selector = Selector.open();
channel = ServerSocketChannel.open();
channel.configureBlocking(false);
channel.register(selector, SelectionKey.OP_ACCEPT);
channel.socket().bind(new InetSocketAddress(host, port));
while (true) {
try {
if (selector.select() == 0) {
continue;
}
} catch (IOException e) {
System.out.println(e.getMessage());
}
Set<SelectionKey> keys = selector.selectedKeys();
for (SelectionKey key : keys) {
if (key.isValid()) {
if (key.isAcceptable()) {
try {
registerChanell();
} catch (IOException e) {
System.out.println(e.getMessage());
}
} else {
if (key.isReadable()) {
handleCommand(key);
}
}
} else {
closeChanell(key);
}
}
keys.clear();
}
你的問題是相當廣泛的,而不是具體的。您的問題幾乎沒有可見性,所以我們很難提供幫助。 – tmn
這可能會更好地問[代碼審查堆棧交換](https://codereview.stackexchange.com/) – Jon
我投票結束這個問題作爲題外話,因爲沒有錯的代碼,沒有具體請求。它太廣泛了。請查看https://codereview.stackexchange.com/和https://codereview.stackexchange.com/help/how-to-ask,然後考慮在那裏提問。 – Jon