-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