Страницы

Поиск по вопросам

вторник, 19 марта 2019 г.

получение коннектов в Netty

Перед тем как написать сюда были предприняты попытки узнать все это у googla, но нечего путного он не выдает, на сайте библиотеки с инфой скудно.
Как на сервере можно получить коннект клиента, чтобы потом с ним работать в отдельных потоках? В old I/O это можно было сделать при помощи serverSocket.accept()


Ответ

Коннект клиента можно получить следующим образом: на сервере создается handler и переопределяются нужные методы например channelActive в этот handler можно передать то куда будут складываться коннекты и при удачном подключении вызовется channelActive и в нем можно будет вытащить из ChannelHandlerContext коннект(Channel).
@Override public void channelActive(ChannelHandlerContext ctx) throws Exception { server.channel = ctx.channel(); }
Дальше channel предоставляет возможность отправки и получения сообщений, но просто так отправить строку или набор байтов не выйдет(у меня не получилось), для этого нужно использовать ByteBuf
ByteBuf buf = channel.alloc().buffer(); buf.writeBytes("message".getBytes()); chanel.pipeline().writeAndFlush(buf);
P.S надеюсь кому нибудь это пригодится.

Комментариев нет:

Отправить комментарий