簡體   English   中英

如何使用Netty從服務器向客戶端發送確認?

[英]How to send acknowledgment from server to client using netty?

誰能解釋一下如何使用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:不支持的消息類型:class [B

請幫我。

您需要將字節數組包裝到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(); 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM