Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Netty сервер не принимает сообщения / 8 сообщений из 8, страница 1 из 1
17.11.2012, 01:56:16
    #38042353
max_drmick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Netty сервер не принимает сообщения
Доброго времени суток!

Дорогие форумчане, в общем проблема такова:
написал простой netty сервер, повесил слушатель на приход сообщений.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class NettyServerHandler extends SimpleChannelUpstreamHandler {
	private boolean _debug;
	
	public NettyServerHandler() {
		_debug = true;
	}

	@Override
	public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
		log("receivermessage");
	}
}



При использовании телнета метод не вызывается.
Если юзаю готовый netty клиент, метод успешно отрабатывает.

Подскажите пожалуйста в чем может быть причина.

Спасибо.
...
Рейтинг: 0 / 0
17.11.2012, 01:58:11
    #38042354
забыл ник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Netty сервер не принимает сообщения
Не на тот порт телнетишься?
...
Рейтинг: 0 / 0
17.11.2012, 02:01:49
    #38042357
max_drmick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Netty сервер не принимает сообщения
забыл ник,

порт верный, событие подключения срабатывает на сервере, а событие приема сообщений не запускается
...
Рейтинг: 0 / 0
17.11.2012, 02:18:25
    #38042362
max_drmick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Netty сервер не принимает сообщения
на putty сообщения приходят, а обратно нет
...
Рейтинг: 0 / 0
17.11.2012, 14:06:20
    #38042526
tumblerrr
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Netty сервер не принимает сообщения
Нужен код всего сервера, проблема не в хенделере скорее всего.
...
Рейтинг: 0 / 0
19.11.2012, 22:20:10
    #38044698
max_drmick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Netty сервер не принимает сообщения
инициализация сервера
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
package core.NettyArticle;

import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;
import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.ChannelFactory;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;


public class NettyServer {	
	public NettyServer(int port) throws Exception{
		ChannelFactory factory = new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), Executors.newCachedThreadPool());		    
	    ServerBootstrap bootstrap = new ServerBootstrap(factory);			    
	    bootstrap.setPipelineFactory(new NettyServerPipeLineFactory());		    
	    bootstrap.setOption("child.tcpNoDelay", true);
	    bootstrap.setOption("child.keepAlive", true);	    
	    bootstrap.bind(new InetSocketAddress(port));	    
	}
}

package core.NettyArticle;

import static org.jboss.netty.channel.Channels.*;

import org.jboss.netty.channel.ChannelPipeline;
import org.jboss.netty.channel.ChannelPipelineFactory;
import org.jboss.netty.handler.codec.frame.DelimiterBasedFrameDecoder;
import org.jboss.netty.handler.codec.frame.Delimiters;
import org.jboss.netty.handler.codec.string.StringDecoder;
import org.jboss.netty.handler.codec.string.StringEncoder;

public class NettyServerPipeLineFactory implements ChannelPipelineFactory {
	public ChannelPipeline getPipeline() throws Exception {
		ChannelPipeline pipeline = pipeline();
		
		pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192, Delimiters.nulDelimiter()));
		pipeline.addLast("decoder", new StringDecoder());
		pipeline.addLast("encoder", new StringEncoder());
		
		pipeline.addLast("handler", new NettyServerHandler());
		
		return pipeline;
	}	
}



хендлер, который не стартует при получении сообщения с putty

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
package core.NettyArticle;

import java.net.InetAddress;
import java.util.Date;

import org.jboss.netty.channel.ChannelEvent;
import org.jboss.netty.channel.ChannelHandlerContext;
import org.jboss.netty.channel.ChannelStateEvent;
import org.jboss.netty.channel.ExceptionEvent;
import org.jboss.netty.channel.MessageEvent;
import org.jboss.netty.channel.SimpleChannelUpstreamHandler;

public class NettyServerHandler extends SimpleChannelUpstreamHandler {
	private boolean _debug;
	
	public NettyServerHandler() {
		_debug = true;
	}
	
	@Override
	public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) {
		log("receivermessage");
		try {
			new CommandProcessorSmall("cmdProcessor", new NetContext(e.getChannel(), (String) e.getMessage()), _debug).start();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
	}	
}
...
Рейтинг: 0 / 0
20.11.2012, 20:27:00
    #38045988
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Netty сервер не принимает сообщения
max_drmick При использовании телнета метод не вызывается.
Если юзаю готовый netty клиент, метод успешно отрабатывает.

Подскажите пожалуйста в чем может быть причина.

Код: java
1.
pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192, Delimiters.nulDelimiter()));

В своей pipelineFactory Вы используете nulDelimiter. org.jboss.netty.handler.codec.frame Class Delimiterspublic static ChannelBuffer[] nulDelimiter()
Returns a NUL (0x00) delimiter, which could be used for Flash XML socket or any similar protocols.
Вероятно, Ваш "готовый netty клиент" завершает строку нулевым байтом в отличие от телнетовского клиента, который присылает окончание строки в виде lineDelimiter
org.jboss.netty.handler.codec.frame Class Delimiterspublic static ChannelBuffer[] lineDelimiter()
Returns CR ('\r') and LF ('\n') delimiters, which could be used for text-based line protocols..
Полагаю, именно поэтому Ваш хендлер не срабатывает
...
Рейтинг: 0 / 0
20.11.2012, 21:23:33
    #38046017
max_drmick
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Netty сервер не принимает сообщения
PL99,

Действительно! Спасибо огромное! Вы мне очень помогли!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Netty сервер не принимает сообщения / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]