2015-10-07 2 views
2

Я работаю над приложением на основе Java-сервера и использую Netty (4.0.27.Final) для соединений сокетов TCP. У меня проблема с клиентской стороной.Netty Multiple Clients, отключая один, влияет на все

В клиенте я использую один BootStrap, один NioEventLoopGroup для нескольких клиентов (100+ одновременных клиентов) и просто вызываю следующее для каждого нового клиентского соединения.

b.handler(new MyConnectionInitializer()); 
b.connect(IP, PORT).sync().channel().closeFuture().sync(); 

Теперь после выполнения работы каждый клиент звонит ctx.disconnect(). После его вызова все клиенты получают ChannelInactive и подключение к серверу для всех клиентов, которые отключены. Хотя я просто хочу, чтобы только клиент, для которого вызывается ctx.disconnect, должен быть отключен.

Должен ли я вызвать другую функцию вместо ctx.disconnect()?

Любая помощь приветствуется.

+0

Возможно ли помощь ctx.deregister? –

ответ

1

Вы должны использовать close() вместо disconnect(). Насколько я понимаю, disconnect() фактически закрывает соединение (и вместе с ним все остальные каналы, которые все еще могут быть открыты), а close() закрывает только текущий канал.

Пожалуйста, поправьте меня, если я напишу что-то неправильно.

Смежные вопросы