免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2959 | 回复: 3
打印 上一主题 下一主题

[Tuxedo] tuxedo 会话通信 运行失败 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-19 20:06 |只看该作者 |倒序浏览
服务器端源程序:
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. #include"atmi.h"
  5. #include"viewrecord.h"

  6. #define MXSTR 80
  7. static struct viewrecord* bufptr;

  8. int tpsvrinit(int argc,char* argv[]){
  9.     bufptr=(struct viewrecord*)tpalloc("VIEW32","viewrecord",sizeof(struct viewrecord));
  10.     return 0;
  11. }

  12. void GETRECORDS(TPSVCINFO* msg){
  13.     long len,revent;
  14.     int cd;
  15.     FILE *file;
  16.     char *error,input[MXSTR];
  17.     cd=msg->cd;

  18.     file=fopen("customerinfo.data","r");

  19.     while((error=fgets(input,80,file))!=NULL){
  20.         strcpy(bufptr->f_name,strtok(input,"    "));
  21.         strcpy(bufptr->l_name,strtok(NULL," "));
  22.         strcpy(bufptr->address,strtok(NULL,"    "));
  23.         strcpy(bufptr->city,strtok(NULL,"   "));
  24.         strcpy(bufptr->state,strtok(NULL,"  "));
  25.         strcpy(bufptr->zipcode,strtok(NULL,"    "));

  26.         if(tpsend(cd,(char*)bufptr,0,TPSIGRSTRT,&revent)==-1){
  27.             userlog("serverconv tpsend receive an unexpected event\n");
  28.             tpreturn(TPFAIL,0,(char*)bufptr,0,0);
  29.         }
  30.     }
  31.     fclose(file);
  32.     tpreturn(TPSUCCESS,0,NULL,0L,0);
  33. }

  34. void tpsvrdone(){
  35.     tpfree((char*)bufptr);
  36. }
复制代码
客户端程序:

  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include"atmi.h"
  4. #include"viewrecord.h"

  5. int main(int argc,char* argv[]){
  6.     int cd,recvlen,ret/*,revent*/;
  7.     long revent;
  8.     struct viewrecord *bufptr;

  9.     tpinit((TPINIT*)NULL);
  10.     if((cd=tpconnect("GETRECORDS",(char*)NULL,0,TPRECVONLY))==-1){
  11.         fprintf(stderr,"tpconnect:%s\n",tpstrerror(tperrno));
  12.         exit(1);
  13.     }

  14.     if((bufptr=(struct viewrecord*)tpalloc("VIEW32","viewrecord",sizeof(struct viewrecord)))==NULL){
  15.         fprintf(stderr,"tpalloc for VIEW32 failed!\n");
  16.         tpterm();
  17.     }

  18.     while(1){
  19.         if((ret=tprecv(cd,(char**)&bufptr,(long*)&recvlen,TPSIGRSTRT,(long*)&revent))==-1)
  20.             if(revent==TPEV_SVCSUCC)
  21.                 break;
  22.         else
  23.             tpdiscon(cd);

  24.         printf("NAME:%s %s\nADDRESS:%s\nCity/State/Zip:%s,%s,%s\n\n",bufptr->f_name,bufptr->l_name,
  25.                 bufptr->address,bufptr->city,bufptr->state,bufptr->zipcode);
  26.     }

  27.     tpfree((char*)bufptr);
  28.     tpterm();
  29.     fprintf(stderr,"----The End!----\n");
  30.     return 0;
  31. }

复制代码
客户端运行结果:
[tuxapp@localhost src]$ ./convclient
NAME:#firstname lastname
ADDRESS:address
City/State/Zip:city,state,zipcode


NAME:jon smith
ADDRESS:123 allen rode
City/State/Zip:san jose,NJ,07938


之后一直输出
NAME:jon smith
ADDRESS:123 allen rode
City/State/Zip:san jose,NJ,07938


NAME:jon smith
ADDRESS:123 allen rode
City/State/Zip:san jose,NJ,07938


NAME:jon smith
ADDRESS:123 allen rode
City/State/Zip:san jose,NJ,07938

.......

不知道哪位大侠知道是哪个地方出错了,求指导

论坛徽章:
15
2015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-15 17:29:44午马
日期:2015-01-06 17:06:51子鼠
日期:2014-11-24 10:11:13寅虎
日期:2014-08-18 07:10:55酉鸡
日期:2014-04-02 12:24:51双子座
日期:2014-04-02 12:19:44天秤座
日期:2014-03-17 11:43:36亥猪
日期:2014-03-13 08:13:51未羊
日期:2014-03-11 12:42:03白羊座
日期:2013-11-20 10:15:18CU大牛徽章
日期:2013-04-17 11:48:45
2 [报告]
发表于 2013-03-20 12:23 |只看该作者
死循环了,看看 客户端程序里,while loop那个部分 if break部分是否有效。

论坛徽章:
0
3 [报告]
发表于 2013-03-21 10:24 |只看该作者
嗯,是这样,貌似服务器端tpreturn(TPSUCCESS,...),客户端没有收到,我尝试了去掉中间的数据发送部分,单单进行tpreturn(TPSUCCESS,...),客户端是可以正常结束的,所以我怀疑是不是tpsend的使用方法不当,我刚接触tuxedo不久,希望版主不吝赐教回复 2# rdcwayx


   

论坛徽章:
0
4 [报告]
发表于 2013-05-18 10:56 |只看该作者
这个问题搞定了,是数据问题,和程序无关,特此结贴
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP