2012-10-03 54 views
0

我开发一个点对点的应用。 ,每个节点有一个服务器套接字通道和套接字通道,.. 现在我需要两个选择来处理服务器套接字通道和套接字通道,连接...JAVA NIO Selector中的查询?

SelectorProvider似乎是一个单例类和它仅外商独资商业企业选择的单个实例,..这我不能能够使用两个插座通道,..

是有一个节目的单个实例使用两个选择器的方式,..

private ServerSocketChannel svrScktChnl; 
private SocketChannel socketChannel; 

两个选择

public Selector selector=null; 
public Selector playerSelector=null; 

我是尽量分开intialize这些选择一个服务器套接字通道,另一个用于套接字通道,..

,但我不能再次因为它抛出一个错误初始化,, ..

+0

你能提供实际上抛出错误的代码吗? –

+1

除非你有数百个连接,否则我会使用阻塞NIO,这意味着你不使用选择器。它更简单,而且通常也更快。 –

+1

如果你不得不关心'SelectorProvider',那么你的确做错了。 –

回答

1

现在我需要两个选择来处理服务器套接字通道和套接字通道,连接...

不,你不会。您可以使用相同的选择两个,除非出于某种原因不在这里说你要处理他们在单独的线程,这实在是一个违规NIO代表一切。

SelectorProvider似乎是一个单独的类

假。 SelectorProvider.provider()返回一个单身,但你并不需要使用它:到处都有的API,让你指定自己的供应商。不,这是相关的,这是因为:

,它仅外商独资商业企业选择

假的单个实例。我不知道你的“外商独资商业企业”的意思,但SelectorProvider.openSelector()返回一个新的Selector每次调用它,这你可以发现自己没有在这里张贴问题,永远在等待可能的可能是不正确的答案的豪华技术即使提供者本身是单身人士,但事实并非如此。

..这我不能能够使用两个套接字通道,..

号显然你从来没有真正尝试过。你需要明白,这是一个经验科学,你需要进行自己的实验。发布在互联网上的知识和坐在后面等待的答案是不是有效地利用你的时间或任何其他人的,它是不计算为做自己的工作,以最快的速度提供正确的答案。

它抛出一个错误

你不能真的希望有人来帮助你的信息少一点。你会接受客户的错误报告吗?

+0

对不起我有一个对象实例化的问题,一旦我instanitiated对象,并使用SelectorProvider.openSelector()所有的问题都解决了,..感谢帮助 问题不是由于选择器,...出现问题因为我没有实例化一个对象有选择器,..没有instatiating我试图分配该选择器,这给我一个例外 –