Тема: Decrypt packets
Показать сообщение отдельно
Непрочитано 09.08.2013, 05:23   #5
Аватар для Sun
Пользователь

Автор темы (Топик Стартер) Re: Decrypt packets

Не получаеться по дружить authserver c gameserver

Добавлено через 26 минут
Код:
    private ByteBuffer buffer = ByteBuffer.allocate(65536).order(ByteOrder.LITTLE_ENDIAN);
    private Selector selector;

    public Controller() throws IOException {
        selector = Selector.open();
    }

    public void register(Selection selection) throws IOException {
        selection.setController(this);

        selection.register(this);
    }

    @Override
    public void run() {
        while (true) {
            int num = 0;

            try {
                num = selector.selectNow();
            } catch (IOException e) {
                e.printStackTrace();
                return;
            }

            if (num > 0) {
                Iterator<SelectionKey> keys = selector.selectedKeys().iterator();

                while (keys.hasNext()) {
                    SelectionKey key = keys.next();

                    Selection selection = (Selection) key.attachment();

                    keys.remove();

                    System.out.println((key.isAcceptable()?"OP_ACCEPT ":"") + (key.isConnectable()?"OP_CONNECT ":"") + (key.isReadable()?"OP_READ ":"") + (key.isWritable()?"OP_WRITE ":""));

                    switch (key.readyOps()) {
                        case SelectionKey.OP_ACCEPT: {
                            ((SelectionServer) selection).accept();

                            break;
                        }
                        case SelectionKey.OP_CONNECT: {
                            selection.connect();

                            break;
                        }
                        case SelectionKey.OP_WRITE: {
                            selection.tryWrite(buffer);

                            break;
                        }
                        case SelectionKey.OP_READ | SelectionKey.OP_WRITE: {
                            selection.tryWrite(buffer);

                            selection.tryRead(buffer);

                            break;
                        }    
                        case SelectionKey.OP_READ: {
                            selection.tryRead(buffer);

                            break;
                        }
                    }
                }
            }

            try {
                Thread.sleep(10);//TODO config
            } catch (InterruptedException e) {
            }
        }
    }
Controller
Если нужно выложу другие части кода. Не буду засерать форум кодом.

Последний раз редактировалось Sun; 09.08.2013 в 05:49. Причина: Добавлено сообщение
Sun вне форума Ответить с цитированием