c+调用java编写mq_C语言实现mq收发数据的函数

amqsget.c 从mq中读取消息

#include

#include

#include

#include

#include "amqsget.h"

#include "commonfunc.h"

int mqsGet(unsigned char *sRecvBuffer)

{

MQOD od =

{MQOD_DEFAULT}; MQMD md =

{MQMD_DEFAULT}; MQGMO gmo =

{MQGMO_DEFAULT};

MQHCONN Hcon; MQHOBJ Hobj; MQLONG O_options; MQLONG C_options; MQLONG CompCode; MQLONG OpenCode; MQLONG Reason; MQLONG CReason; MQBYTE buffer[65536]; MQLONG buflen; MQLONG messlen; char QMName[50];

int iret =

0;

char

smqRecvQueNm[50]; char

smqSendQueNm[50]; char

smqQueMngNm[50]; char

smqQueOpenOptn[50]; char

smqQueClsOptn[50];

memset(smqRecvQueNm, 0,

sizeof(smqRecvQueNm));

memset(smqSendQueNm, 0,

sizeof(smqSendQueNm));

memset(smqQueMngNm, 0,

sizeof(smqQueMngNm));

memset(smqQueOpenOptn, 0,

sizeof(smqQueOpenOptn));

memset(smqQueClsOptn, 0,

sizeof(smqQueClsOptn));

memset(sRecvBuffer, 0, sizeof(buffer));

memset(buffer, 0, sizeof(buffer));

iret = ReadINIFile("MQMANAGELIST", "mqMngNm",

smqQueMngNm, "main.ini" );

if ( iret != 1 ) { WriteLog("SEND",

"配置文件中没有找到节点[mqMngNm]\n");

return 1;

}

iret = ReadINIFile("MQMANAGELIST",

"mqQueOpenOptn", smqQueOpenOptn, "main.ini" );

if ( iret != 1 ) { WriteLog("SEND",

"配置文件中没有找到节点[mqQueOpenOptn]\n");

return 1;

}

iret = ReadINIFile("MQMANAGELIST",

"mqQueClsOptn", smqQueClsOptn, "main.ini" );

if ( iret != 1 ) { WriteLog("SEND",

"配置文件中没有找到节点[mqQueClsOptn]\n");

return 1;

}

iret = ReadINIFile("MQQUEUELIST", "mqRecvQueNm",

smqRecvQueNm, "main.ini" );

if ( iret != 1 ) { WriteLog("SEND",

"配置文件中没有找到节点[mqRecvQueNm]\n");

return 1;

}

//WriteLog("SEND", "smqRecvQueNm=[%s],

smqQueMngNm=[%s], smqQueOpenOptn=[%s], smqQueClsOptn=[%s]\n\n",

smqRecvQueNm, smqQueMngNm, smqQueOpenOptn, smqQueClsOptn);

//WriteLog("SEND", "Sample AMQSGET0

start\n");

QMName[0] =

0; strncpy(od.ObjectName, smqRecvQueNm,

MQ_Q_NAME_LENGTH);

strncpy(QMName, smqQueMngNm,

MQ_Q_MGR_NAME_LENGTH);

MQCONN(QMName, &Hcon, &CompCode, &CReason);

if (CompCode == MQCC_FAILED)

{

WritePrintLog( "MQCONN ended

with reason code %d\n", CReason);

//exit( (int)CReason );

return 1;

}

if (0 != strlen(smqQueOpenOptn))

{

O_options = atoi(

smqQueOpenOptn );

//WriteLog("SEND",

"open options are %d\n", O_options);

}

else

{

O_options =

MQOO_INPUT_AS_Q_DEF | MQOO_FAIL_IF_QUIESCING

; }

MQOPEN(Hcon, &od, O_options, &Hobj, &OpenCode, &Reason);

if (Reason != MQRC_NONE)

{

WritePrintLog( "MQOPEN ended

with reason code %d\n", Reason);

}

if (OpenCode == MQCC_FAILED)

{

WritePrintLog( "unable to open

queue for input\n");

return 1;

}

CompCode =

OpenCode;

gmo.Options =

MQGMO_WAIT |

MQGMO_NO_SYNCPOINT |

MQGMO_CONVERT; gmo.WaitInterval =

15000;

//while (CompCode != MQCC_FAILED)

if (CompCode != MQCC_FAILED)

{

buflen = sizeof(buffer) -

1;

memcpy(md.MsgId, MQMI_NONE,

sizeof(md.MsgId));

memcpy(md.CorrelId, MQCI_NONE,

sizeof(md.CorrelId));

md.Encoding = MQENC_NATIVE;

md.CodedCharSetId =

MQCCSI_Q_MGR;

MQGET(Hcon, Hobj, &md, &gmo, buflen, buffer, &messlen, &CompCode, &Reason);

if (Reason != MQRC_NONE)

{

if (Reason ==

MQRC_NO_MSG_AVAILABLE)

{ WritePrintLog(

"no more messages\n");

}

else

{

WritePrintLog(

"MQGET ended with reason code %d\n", Reason);

if

(Reason == MQRC_TRUNCATED_MSG_FAILED)

{

CompCode

= MQCC_FAILED;

}

}

}

if (CompCode !=

MQCC_FAILED)

{

buffer[messlen]

=

'\0'; WritePrintLog(

"message \n", buffer);

strcpy(sRecvBuffer,

buffer);

}

}

if (OpenCode != MQCC_FAILED)

{

if (0 !=

strlen(smqQueClsOptn))

{

C_options =

atoi( smqQueClsOptn );

WritePrintLog(

"close options are %d\n", C_options);

}

else

{

C_options =

MQCO_NONE; }

MQCLOSE(Hcon, &Hobj, C_options,

&CompCode, &Reason);

if (Reason != MQRC_NONE)

{

WritePrintLog(

"MQCLOSE ended with reason code %d\n", Reason);

}

}

if (CReason != MQRC_ALREADY_CONNECTED )

{

MQDISC(&Hcon, &CompCode, &Reason);

if (Reason != MQRC_NONE)

{

WritePrintLog(

"MQDISC ended with reason code %d\n", Reason);

}

}

if(0 == strlen(buffer)) {

//WritePrintLog("接收到的报文为空\n");

return 1;

}

else {

WritePrintLog("buffer=[%s]\n",

buffer);

strcpy(sRecvBuffer,

buffer);

}

//WriteLog("SEND", "Sample AMQSGET0

end\n");

return(0);

}

amqsput.c 向mq中发送消息

#include

#include

#include

#include

#include "amqsput.h"

#include "commonfunc.h"

#include "codeConv.h"

int mqsPut(char * sOutBuffer)

{

FILE *fp;

MQOD od =

{MQOD_DEFAULT}; MQMD md =

{MQMD_DEFAULT}; MQPMO pmo =

{MQPMO_DEFAULT};

MQHCONN Hcon; MQHOBJ Hobj; MQLONG O_options; MQLONG C_options; MQLONG CompCode; MQLONG OpenCode; MQLONG Reason; MQLONG CReason; MQLONG messlen; char buffer[65535]; char QMName[50];

WritePrintLog("Sample AMQSPUT0

start\n");

int iret = 0;

char sQMName[50];

char sQInName[50];

char sQOutName[50];

char smqQueOpenOptn[50];

char smqQueClsOptn[50];

char sSendDynamicQueNm[50];

memset(sQMName, 0, sizeof(sQMName));

memset(sQInName, 0, sizeof(sQInName));

memset(sQOutName, 0, sizeof(sQOutName));

memset(smqQueOpenOptn, 0,

sizeof(smqQueOpenOptn));

memset(smqQueClsOptn, 0,

sizeof(smqQueClsOptn));

memset(sSendDynamicQueNm, 0,

sizeof(sSendDynamicQueNm));

iret = ReadINIFile("MQMANAGELIST", "mqMngNm",

sQMName, "main.ini" );

if ( iret != 1 ) { WritePrintLog(

"配置文件中没有找到节点[mqMngNm]\n");

return 1;

}

iret = ReadINIFile("MQQUEUELIST", "mqRecvQueNm",

sQInName, "main.ini" );

if ( iret != 1 ) { WritePrintLog(

"配置文件中没有找到节点[mqRecvQueNm]\n");

return 1;

}

iret = ReadINIFile("MQQUEUELIST", "mqSendQueNm",

sQOutName, "main.ini" );

if ( iret != 1 ) { WritePrintLog(

"配置文件中没有找到节点[mqSendQueNm]\n");

return 1;

}

iret = ReadINIFile("MQQUEUELIST",

"mqSendDynamicQueNm", sSendDynamicQueNm, "main.ini" );

if ( iret != 1 ) { WritePrintLog(

"配置文件中没有找到节点[mqSendDynamicQueNm]\n");

return 1;

}

iret = ReadINIFile("MQMANAGELIST",

"mqQueOpenOptn", smqQueOpenOptn, "main.ini" );

if ( iret != 1 ) { WriteLog("SEND",

"配置文件中没有找到节点[mqQueOpenOptn]\n");

return 1;

}

iret = ReadINIFile("MQMANAGELIST",

"mqQueClsOptn", smqQueClsOptn, "main.ini" );

if ( iret != 1 ) { WriteLog("SEND",

"配置文件中没有找到节点[mqQueClsOptn]\n");

return 1;

}

WritePrintLog( "sQMName=[%s],

sQOutName=[%s],sSendDynamicQueNm=[%s],sQInName=[%s]\n\n", sQMName,

sQOutName,sSendDynamicQueNm, sQInName);

QMName[0] =

0; strncpy(QMName, sQMName,

(size_t)MQ_Q_MGR_NAME_LENGTH);

MQCONN(QMName, &Hcon, &CompCode, &CReason);

if (CompCode == MQCC_FAILED)

{

WritePrintLog("MQCONN ended

with reason code %d\n", CReason);

exit( (int)CReason );

}

strncpy(od.ObjectName, sQOutName,

(size_t)MQ_Q_NAME_LENGTH);

WritePrintLog("target queue is %s\n",

od.ObjectName);

//if (argc > 5)

{

strncpy(od.ObjectQMgrName, QMName, (size_t)

MQ_Q_MGR_NAME_LENGTH);

WritePrintLog("target queue manager is %s\n",

od.ObjectQMgrName);

}

//if (argc > 6)

{

strncpy(od.DynamicQName, sSendDynamicQueNm,

(size_t) MQ_Q_NAME_LENGTH);

WritePrintLog("dynamic queue name is %s\n",

od.DynamicQName);

}

if (0 != strlen(smqQueOpenOptn))

{

O_options = atoi(

smqQueOpenOptn );

WritePrintLog("open options are %d\n", O_options);

}

else

{

O_options =

MQOO_OUTPUT |

MQOO_FAIL_IF_QUIESCING  ; }

MQOPEN(Hcon, &od, O_options, &Hobj, &OpenCode, &Reason);

if (Reason != MQRC_NONE)

{

WritePrintLog("MQOPEN ended

with reason code %d\n", Reason);

}

if (OpenCode == MQCC_FAILED)

{

WritePrintLog("unable to open

queue for output\n");

}

CompCode =

OpenCode; fp = stdin;

memcpy(md.Format, MQFMT_STRING,

(size_t)MQ_FORMAT_LENGTH);

pmo.Options = MQPMO_NO_SYNCPOINT

| MQPMO_FAIL_IF_QUIESCING;

if (CompCode != MQCC_FAILED)

{

//if (fgets(buffer,

sizeof(buffer), fp) != NULL)

//{

// messlen =

(MQLONG)strlen(buffer);

//if (buffer[messlen-1] ==

'\n') //{

//

buffer[messlen-1] =

'\0'; // --messlen; //}

// }

//else messlen =

0;

strcpy(buffer,

sOutBuffer);

messlen = strlen(buffer);

char *szOut;

char sTbuffer[65535];

memset(sTbuffer, 0,

sizeof(sTbuffer));

szOut = u2g(buffer);

strcpy(sTbuffer, szOut);

free(szOut);

if (messlen >

0)

{

WritePrintLog("MQPUT===============buffer[%s][%d]\n",

sTbuffer, strlen(sTbuffer));

memcpy(md.MsgId, MQMI_NONE,

sizeof(md.MsgId) );

MQPUT(Hcon, Hobj, &md, &pmo, messlen, buffer, &CompCode, &Reason);

if (Reason !=

MQRC_NONE)

{

WritePrintLog("MQPUT

ended with reason code %d\n", Reason);

}

}

else CompCode =

MQCC_FAILED;

}

if (OpenCode != MQCC_FAILED)

{

if (0 !=

strlen(smqQueClsOptn))

{

C_options =

atoi( smqQueClsOptn );

WritePrintLog("close

options are %d\n", C_options);

}

else

{

C_options =

MQCO_NONE; }

MQCLOSE(Hcon, &Hobj, C_options,

&CompCode, &Reason);

if (Reason != MQRC_NONE)

{

WritePrintLog("MQCLOSE

ended with reason code %d\n", Reason);

}

}

if (CReason != MQRC_ALREADY_CONNECTED)

{

MQDISC(&Hcon, &CompCode, &Reason);

if (Reason != MQRC_NONE)

{

WritePrintLog("MQDISC

ended with reason code %d\n", Reason);

}

}

WritePrintLog("Sample AMQSPUT0 end\n");

return(0);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值