mina 客戶端無法得到伺服器的返回值

2021-07-09 23:36:46 字數 2262 閱讀 5643

1.客戶端和伺服器的使用的過濾器不一致

例如:

伺服器端:

// 新增編、解碼器

acceptor.getfilterchain().addlast("codec",new protocolcodecfilter(new wsfcodecfactory()));

// 設定處理客戶端訊息的處理類

acceptor.sethandler(new wsfserverhandler());

acceptor.getsessionconfig().setreadbuffersize(1024);

acceptor.getsessionconfig().setidletime(idlestatus.both_idle, 10);

acceptor.bind(new inetsocketaddress(constant.service_tcp_port));

客戶端:

niosocketconnector connector = new niosocketconnector();

connector.getfilterchain().addlast(

"encode",

new protocolcodecfilter(new textlinecodecfactory(charset

.forname("utf-8"), linedelimiter.windows

.getvalue(),

linedelimiter.windows

.getvalue())));

connector.getsessionconfig().setreadbuffersize(2048);

connector.getsessionconfig().setidletime(idlestatus.both_idle, 10);

connector.setconnecttimeoutmillis(30000);

connector.sethandler(new sendmsgclienthandler());

2.解析的規則導致資訊無法被服務端正確解析而無法回傳值

例如:

@override

protected boolean dodecode(iosession session, iobuffer in,

protocoldecoderoutput out) throws exception

// 如果長度小於 16 不予處理:根據需要進行調整

if (bytes.length < constant.protocol_length_without_content)

// 獲取資料長度

short datalength = shortbyte(bytes[1], bytes[2]);

// 獲取命令型別

// 取出資料,1.資料的開頭、結尾要跟協議定義的一致 2.資料的長度要跟定義的一致

logger.info("命令長度:" + datalength + ",命令型別:" + bytes[5]);

if (bytes[0] != constant.protocol_head

|| bytes[bytes.length - 1] != constant.protocol_foot

|| bytes.length != datalength)

// 列印日誌

logger.info(iobuffer.wrap(bytes).gethexdump());

// 構造 訊息物件

wsfmessage message = new wsfmessage();

out.write(message);

return

true;

}

上面**中的

// 如果長度小於 16 不予處理:根據需要進行調整

if (bytes.length

< constant.protocol_length_without_content)

if (bytes[0] != constant.protocol_head

|| bytes[bytes.length - 1] != constant.protocol_foot

|| bytes.length != datalength)

會出現客戶端傳送資料伺服器無法正確解析的情況,這些需要注意。

mina的伺服器與客戶端的例子

1 伺服器端 public class minaserver catch ioexception e 2 伺服器的業務邏輯處理 public class minaserverhandler extends iohandleradapter override public void messagere...

DataSnap伺服器如何得到客戶端的IP和埠

作為乙個伺服器軟體,必須做到對客戶端強有力的控制,想要控制,就必須得到客戶端的網路基本資訊,比如客戶端ip和埠。有了客戶端ip就能隨心所欲操控客戶端,比如終止某些客戶端的連線 限制功能等等。在delphi2010中的datasnap伺服器如何獲得客戶端ip,的確花了我點時間,奇怪為什麼這個功能不做的...

SVN客戶端無法連線伺服器的問題

今天特鬱悶,第一天上班就遇到svn無法連線到伺服器的問題 options 無法連線到伺服器 伺服器積極拒絕!no element not found 種種錯誤。開始還以為是svn版本的問題 因為我用的版本是1.7.1最新版 然後就解除安裝了再重灌上了1.6.5版本的,但是結果還是一樣無法連線。然後在...