我想将客户端连接到多个服务器,并从其中一个服务器接收第一个答案。所以我决定使用select。我为每个服务器创建了一个套接字,并在选择器中注册了这些套接字。但它没有用。这是我的代码中存在问题的地方:
Selector selector = Selector.open();//
int i;
for(i=0;i<serveurs.size();i++)//I have an arraylist of servers
{
Socket s=new Socket(serveurs.get(i).getIP(),port);//creating a socket with the server number i
sc=s.getChannel();//here's the problem: sc is null
sc.configureBlocking(false);//exception here because sc=null
sc.register(selector, SelectionKey.OP_READ);//register the socket channel to recieve data form the server
}
selector.select();
// reading data in the socket registered in the selector
那么我该怎么做才能解决这个问题?
答案 0 :(得分:0)
刷新书籍"TCP/IP Sockets in Java, 2nd Edition"遇到时间服务器和客户端。 TcpTimeClient.java的小型演示代码基本上就是你所描述的。
我可以在您的代码中看到的问题:
关注取决于申请协议: