傳遞外部資料進入netty併發送出去(1)
阿新 • • 發佈:2019-02-10
假設我們是要將datasend.java 內的data 資料通過netty的client.java,clientHandler.java傳遞至伺服器端。
本人暫時想到兩種方法來解決該問題。
思路1:我們只需要獲取到clientHandler 內部的 ChannelHandlerContext ctx,再使用ctx.writeandflush(data)不就解決了。
做法如下:
public class clientHandler extends SimpleChannelInboundHandler<Object> { public ChannelHandlerContextmyctx;
1.在clientHandler 內定義一個myctx用於引數傳遞;
public void channelActive(ChannelHandlerContext ctx) throws Exception {
myctx = ctx;
2.在channelActive內部將已有的ctx傳遞給myctx;
public class client { public clientHandler cl=new clientHandler();...........
ch.pipeline().addLast(cl);//此時就不能再繼續使用addLast(new clientHander())了
3.在client內定義一個clientHandler用於引數傳遞
public class datasend{ client myclient=new client();//這兒我是選擇新開一個執行緒來執行myclient.connct(host,port),即事先得保證伺服器客戶端已經連通
ChannelHandlerContext useMyctx=myclient.cl.myctx; useMyctx.writeandflush(data);//大功告成
4.在datasend.java內直接使用ctx傳輸資料!,