因應某一伺服端程控, ack message 屬於不定長度, 現有SockTcpHandler無法判定, 導致視為異常作業, 自動終止連線, 再重新連線
目前SockTcpHandler::setAckSize (), 意即指定元件須確認 ack message size相同時, 才會將ack messsage以call back方式引入, 反之, 視為異常作業, 自行斷線重新連線
試以增加一函式, SockTcpHandler::setCheckAckSize (), 由同仁自訂是否需要由元件檢查ack message size, 預設為true (檢查)
反之(不檢查), 元件則直接將接收的 ack message以call back方式引入
提供使用範例程式碼如下::
void NGOSndCtrl::run()
{
int rcv_len = 0;
myTcpClnt.openClient(server, _TCPPORT);
myTcpClnt.setHeaderSize(sizeof(TCP_HEAD));
myTcpClnt.setAckSize(sizeof(TCP_ACK), sizeof(TCP_HEAD)+1);
myTcpClnt.setNeedAck(1);
myTcpClnt.setCheckAckSize (ChkACKSize_NO); // 設定為不檢查
myTcpClnt.setTimeout(1000); // -1 is no time out
/*an option, custom to ckeck reply ack message */
myTcpClnt.setOnReadAck(CB(onReadAck));
myTcpClnt.runClient();
.....(以下省略)
}
沒有留言:
張貼留言