程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> TUXEDO MIB信息查詢

TUXEDO MIB信息查詢

編輯:C++入門知識

                         MIB信息查詢
1. 實現功能
查詢MIB,提取字段信息。本文主要介紹提取:客戶端ID、客戶端名、用戶名。
2. 設置環境變量 www.2cto.com
第一個環境變量:
FLDTBLDIR32=$APPDIR:$TUXDIR/udataobj
第二個環境變量:
FIELDTBLS32=bank_fml,rtpnr_fml,common_fml,ui_fml,openpnr.fml32,open_detr_fml,tpadm,Usysfl32,evt_mib
3. 結構設計
目的:通過客戶查詢服務端MIB信息   

4. 代碼設計
客戶端代碼:
#include <userlog.h>
#include <Uunix.h>
#include <atmi.h>
#include <boost/thread/thread.hpp>
#include <string.h>
#include <string>
#include <fml32.h>
#include <evt_mib.h>
using namespace std;
int main(int argc, char*  argv[])
{
  string logName = "mylog";
  string cltName = "cltname";
  string usrName = "usrname";
  for(int i = 1; i < argc; i++)
  {
    if(i == 1)
    {
      logName = argv[i];
    }
    else if(i == 2)
    {
      cltName = argv[i];
    }
    else if(i == 3)
    {
      usrName = argv[3];
    }
    else
    {
      break;
    }
  }
  TPINIT *userinfo=(TPINIT*)tpalloc("TPINIT",(char *)NULL,TPINITNEED(168));
  strcpy (userinfo->cltname, cltName.c_str());
  //strcpy (userinfo->grpname, "AA");
  //strcpy (userinfo->passwd, "123456");
  strcpy (userinfo->usrname, usrName.c_str());
  userinfo->datalen = 100;
  if ( tpinit(userinfo) == -1)
  {
printf("tpinit error\n");
        printf("init:%s\n",tpstrerror(tperrno));
  }
  FBFR32 *iData = (FBFR32*)tpalloc (FMLTYPE32, NULL, 5000L);
  Fchg32 (iData, TA_OPERATION, 0, "GET", 0);
  Fchg32 (iData, TA_CLASS, 0, "T_CLIENT", 0);
  FILE * fp=fopen(logName.c_str(),"w+");
  long  lLen = Fsizeof32 (iData);
  if (tpcall (".TMIB", (char*)iData, (long)0, (char**)&iData, &lLen, (long)(TPSIGRSTRT | TPNOTRAN)) == 0)
  {
      // long lerrno = Fvall32 ( iData, TA_ERROR, 0 );
      printf("tpcall success!\n");
      int eveCount = Fnum32(iData);
      char buffer[1024];
      string logstr("");
      for(int i = 0; i < eveCount; i++)
      {
         if(-1 !=  Fgets32(iData, TA_CLIENTID, i, buffer))
         {
           logstr = "TA_CLIENTID ";
           logstr += buffer;
           logstr += '\n';
           fputs(logstr.c_str(), fp);
         }
       
         if(-1 !=  Fgets32(iData, TA_USRNAME, i, buffer))
         {
           logstr = "TA_USRNAME ";
           logstr += buffer;
           logstr += '\n';
           fputs(logstr.c_str(), fp);
         }
        
         if(-1 !=  Fgets32(iData, TA_CLTNAME, i, buffer))
         {
           logstr = "TA_CLTNAME ";
           logstr += buffer;
           logstr += '\n';
           fputs(logstr.c_str(), fp);
         }
      }
 }
 else
 {
   printf ( "tpcall error:%d:%s\n", tperrno, tpstrerror(tperrno) );
 }
  fclose(fp);
  boost::this_thread::sleep(boost::posix_time::milliseconds(1000*1000));
  tpterm();
 
  return 0;
}
5. 服務端設置
關掉tuxedo服務器的安全配置,即如果ubb中設置了"SECURITY ACL"需要注釋掉,這並不代表配置了安全就不支持客戶部查詢MIB了,只是多了些約束而已。
 
6. 運行和結果
運行:
   
Test2 是我編譯後的可執行文件名。mylog是日志名,clt1 是客戶端名,usr1 是用戶名, 這都是參數而已。
結果(結果放在mylog裡面):

日志結果:

作者:bobui

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved