Как отправить подтверждение от сервера клиенту, используя netty? - PullRequest
2 голосов
/ 28 марта 2012

Может ли кто-нибудь объяснить, как отправить подтверждение с сервера на устройство, используя netty .

Я использую следующий код:

public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
            throws Exception {

    String msg = null;
    String IMIE = null;
    String[] str = null;
    String ack = null;
    StringBuffer sbs = new StringBuffer();
    ChannelBuffer buf = (ChannelBuffer) e.getMessage();

    while(buf.readable()) {
        sbs.append((char) buf.readByte());          
    }

    msg = sbs.toString();
    System.out.println(msg);


    byte[] request = new byte[] { 0x01 };
    e.getChannel().write(request,e.getChannel().getRemoteAddress());
    System.out.flush(); 

и получаю ошибку

java.lang.IllegalArgumentException: неподдерживаемый тип сообщения: класс [B

Пожалуйста, помогите мне.

1 Ответ

4 голосов
/ 28 марта 2012

Вам нужно поместить свой байтовый массив в ChannelBuffer или добавить кодер, который сделает это за вас.Итак, самое простое исправление это:

public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
        throws Exception {

    String msg = null;
    String IMIE = null;
    String[] str = null;
    String ack = null;
    ChannelBuffer buf = null;
    StringBuffer sbs = new StringBuffer();
    buf = (ChannelBuffer) e.getMessage();
    while(buf.readable()) {
        sbs.append((char) buf.readByte());
     }

    msg = sbs.toString();
    System.out.println(msg);


    byte[] request = new byte[] { 0x01 };
    e.getChannel().write(ChannelBuffers.wrappedBuffer(request));
    System.out.flush(); 
}
...