有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

迭代器Java NIO异常

您好,我正在尝试使用NIO进行聊天,在服务器部分的一个独立线程中,当我:

private void broadcast(String msg, String user)    
{
    String Message = user + ":" + msg + "\0";
    System.out.println(Message);
    ByteBuffer buf=ByteBuffer.wrap(Message.getBytes());
    Set<SelectionKey> selectedKeys  = selector.keys();
    Iterator<SelectionKey> keyIterator = selectedKeys.iterator();

    while(keyIterator.hasNext()) 
    {
        SelectionKey key = keyIterator.next();
        if(key.attachment() != user)
        {
            try {
                ((SocketChannel) key.channel()).write(buf);
            } catch (IOException e) {
                e.printStackTrace();
            }
            buf.rewind();
        }
        keyIterator.remove();
    }
}

我有一个例外:

java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableCollection$1.remove(Unknown Source)
at chatserver.MessageSender.broadcast(MessageSender.java:41)
at chatserver.MessageSender.run(MessageSender.java:113)
at java.lang.Thread.run(Unknown Source)

第41行是:键迭代器。移除(); 我用这个作为指导:Java NIO Tutorial


共 (0) 个答案