2012年12月31日 星期一

SockTcpHandler 增加 setCheckAckSize(), 由開發人員自訂是否需要檢查ack message size

因應某一伺服端程控,  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();

    .....(以下省略)
}

沒有留言:

張貼留言