2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩41頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  附件1:封面</b></p><p>  《Linux課程設(shè)計(jì)》</p><p><b>  報(bào) 告</b></p><p>  設(shè)計(jì)題目: 手機(jī)交費(fèi)系統(tǒng) </p><p>  專 業(yè): 軟件工程 </p>

2、<p>  2015年06月26日</p><p><b>  目錄</b></p><p><b>  一、需求分析2</b></p><p><b>  1.功能介紹2</b></p><p><b>  2.目的及意義3</b><

3、;/p><p><b>  2.1.目的3</b></p><p><b>  2.2.意義3</b></p><p><b>  二、總體設(shè)計(jì)3</b></p><p><b>  1.功能介紹3</b></p><p>&l

4、t;b>  2.模塊關(guān)聯(lián)4</b></p><p><b>  三、詳細(xì)設(shè)計(jì)6</b></p><p><b>  1.結(jié)構(gòu)說明6</b></p><p>  2.功能的關(guān)鍵代碼9</p><p>  四、測(cè)試及運(yùn)行結(jié)果36</p><p><

5、;b>  1.調(diào)試36</b></p><p><b>  2.運(yùn)行結(jié)果36</b></p><p>  五、 測(cè)試總結(jié)40</p><p><b>  一、需求分析</b></p><p><b>  1.功能介紹</b></p><

6、;p>  這個(gè)設(shè)計(jì)實(shí)現(xiàn)了手機(jī)繳費(fèi)功能,分別是通過管理員操作和用戶自主網(wǎng)上操作,功能</p><p>  包括可以查看手機(jī)余額,以及銀行卡交費(fèi)和銀行卡余額查詢等功能</p><p><b>  2.目的及意義</b></p><p><b>  2.1.目的</b></p><p>  基于UN

7、IX Socket和MySQL數(shù)據(jù)庫,設(shè)計(jì)一個(gè)交易型中間件系統(tǒng)。</p><p>  這里的中間件是指交易型中間件。交易型中間件是指用在不同行業(yè)、不同部門間的通訊轉(zhuǎn)發(fā)和協(xié)議轉(zhuǎn)換的軟件,在不同的行業(yè)、不同的系統(tǒng)間提供通訊轉(zhuǎn)發(fā)和協(xié)議轉(zhuǎn)換的橋梁作用。例如電子商務(wù)、銀行代理業(yè)務(wù)軟件等都是這種類型的軟件。本設(shè)計(jì)不是基于WEB的,不需要很多與WEB開發(fā)相關(guān)的知識(shí),主要是利用linux系統(tǒng)提供的Socket庫在網(wǎng)絡(luò)底層,開發(fā)交

8、易型中間件。</p><p>  模擬手機(jī)繳費(fèi)系統(tǒng),通過對(duì)移動(dòng)通信話費(fèi)查詢與繳費(fèi)業(yè)務(wù)進(jìn)行了系統(tǒng)全面的分析研究。針對(duì)現(xiàn)有系統(tǒng)中實(shí)時(shí)性不足而造成用戶欠費(fèi)太多使公司企業(yè)蒙受損失的問題。采用開發(fā)工具Linux進(jìn)行系統(tǒng)設(shè)計(jì)?;趌inux Socket和mysql數(shù)據(jù)庫,設(shè)計(jì)一個(gè)交易型中間件系統(tǒng)。提供通訊轉(zhuǎn)發(fā)和協(xié)議轉(zhuǎn)換的橋梁作用。例如電子商務(wù)、銀行代理業(yè)務(wù)軟件等都是這種類型軟件。這里的中間件是指交易型中間件。交易型中間件是

9、指用在不同行業(yè)、不同部門間的通訊轉(zhuǎn)發(fā)和協(xié)議轉(zhuǎn)換的軟件,在不同的行業(yè)、不同的系統(tǒng)間。這里主要是利用linux系統(tǒng)提供的Socket庫在網(wǎng)絡(luò)底層,開發(fā)交易型中間件。</p><p>  本次設(shè)計(jì)要求實(shí)現(xiàn)對(duì)移動(dòng)話費(fèi)信息輸入、查詢、編輯以及話費(fèi)統(tǒng)計(jì)各明細(xì)項(xiàng)目的數(shù)據(jù)編輯;可自主設(shè)定條件從而達(dá)到對(duì)話費(fèi)數(shù)據(jù)的多角度查詢功能;方便導(dǎo)入、導(dǎo)出數(shù)據(jù)及輸出報(bào)表</p><p><b>  2.2.意義

10、</b></p><p>  本次設(shè)計(jì)實(shí)現(xiàn)了管理員操作交費(fèi)和用戶通過網(wǎng)絡(luò)銀行交費(fèi)等功能,實(shí)現(xiàn)了這個(gè)系統(tǒng),對(duì)于Linux下的c編程了解了不少,學(xué)到了很多知識(shí)。Linux操作系統(tǒng)對(duì)于編程人員來說要比Windows操作系統(tǒng)功能要強(qiáng)大的多,Linux是一套免費(fèi)使用和自由傳播的類Unix操作系統(tǒng),是一個(gè)基于POSIX和UNIX的多用戶、多任務(wù)、支持多線程和多CPU的操作系統(tǒng)。它能運(yùn)行主要的UNIX工具軟件、應(yīng)用

11、程序和網(wǎng)絡(luò)協(xié)議。它支持32位和64位硬件。Linux繼承了Unix以網(wǎng)絡(luò)為核心的設(shè)計(jì)思想,是一個(gè)性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。</p><p><b>  二、總體設(shè)計(jì)</b></p><p><b>  1.功能介紹</b></p><p><b>  系統(tǒng)模型:</b></p>&l

12、t;p>  這個(gè)程序是模擬手機(jī)交費(fèi)系統(tǒng),所以運(yùn)行時(shí)服務(wù)器一直處于工作狀態(tài),等待來自中間件發(fā)過來的服務(wù)或數(shù)據(jù)。而中間件只有在客戶端傳來數(shù)據(jù)或者要求服務(wù)時(shí)才處于運(yùn)行狀態(tài)。C/S應(yīng)用程序中復(fù)制尋找數(shù)據(jù)的步伐只需要訪問一個(gè)中間件系統(tǒng),由中間件完成網(wǎng)絡(luò)中獲得的數(shù)據(jù)源或服務(wù),進(jìn)行事先傳輸客戶請(qǐng)求,重組回復(fù)信息,最后將結(jié)果送回應(yīng)用程序的任務(wù)。</p><p><b>  2.模塊關(guān)聯(lián)</b><

13、/p><p><b>  流程圖:</b></p><p><b>  系統(tǒng)流程圖:</b></p><p><b>  三、詳細(xì)設(shè)計(jì)</b></p><p><b>  1.結(jié)構(gòu)說明</b></p><p><b>  數(shù)據(jù)

14、庫:</b></p><p><b>  2.功能的關(guān)鍵代碼</b></p><p><b>  client:</b></p><p>  #include <stdio.h></p><p>  #include <stdlib.h></p>&

15、lt;p>  #include <sys/types.h></p><p>  #include <sys/socket.h></p><p>  #include <netinet/in.h></p><p>  #include <sys/un.h></p><p>  #includ

16、e <netdb.h></p><p>  #include <unistd.h></p><p>  #include <fcntl.h></p><p>  #include <termios.h></p><p>  #include <unistd.h></p>

17、<p>  #include <errno.h></p><p>  #include <time.h></p><p>  #define rec_length50</p><p>  #define ECHOFLAGS (ECHO | ECHOE | ECHOK | ECHONL)</p><p> 

18、 void strsplit(char *sourceStr,char **v,char d);//字符串拆分函數(shù),拆分傳遞的信息</p><p>  int getpasswd(char* passwd, int size);</p><p>  int set_disp_mode(int fd,int option);//用于控制是否開啟輸入回顯功能 </p><p

19、>  void gettime(char datafull[]);</p><p>  main(int argc,char **argv)</p><p><b>  {</b></p><p>  structhostent *hp;</p><p>  structsockaddr_in sin;<

20、/p><p>  structservent *sp;</p><p>  char connbuf[80],buf[80],oprname[20],usrname[20],bankno[20],bankpwd[20],num[20],deposite[30];</p><p>  char quebuf[80],readbuf[80],queoprpwd[20],q

21、ueusrpwd[20];</p><p>  char oprpwd[20],usrpwd[20];</p><p>  char phoneno[12],testStr[10],tmp[10];</p><p>  int s,pid;</p><p>  char money[10],nowtime[30],logbuf[100],l

22、ogbuf1[100],logbuf2[20];</p><p>  int k=1,t=1,m=1,n=1,q=1,r=1,w=1,z=1;</p><p>  char *service,*dest;</p><p>  char option,chose,ch[5];</p><p>  char d='-',**v=(

23、char**)malloc(sizeof(char*) * 10);</p><p>  static int wf;</p><p>  if(argc==3){ </p><p>  service=argv[1];</p><p>  dest=argv[2];</p><p><b>  }</

24、b></p><p><b>  else {</b></p><p>  fprintf(stderr,"NO service assigned!\nUsage:");</p><p>  fprintf(stderr,"%s service_name destination!\n",argv[0

25、]);</p><p>  fprintf(stderr,"Note: service_name is defined in /etc/services\n");</p><p>  fprintf(stderr," destination is defined in /etc/hosts\n");</p><p>

26、<b>  exit(-1);</b></p><p><b>  }</b></p><p>  if((wf=open("client.log",O_WRONLY|O_SYNC|O_CREAT|O_APPEND,0644))==-1)</p><p><b>  {</b>&l

27、t;/p><p>  printf("Log file 'client' open error!\a\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p><b>  while(k)<

28、;/b></p><p><b>  {</b></p><p>  k=1,t=1,m=1,n=1,q=1,r=1,w=1,z=1;</p><p>  system("clear");</p><p>  printf("\t*******************話費(fèi)服務(wù)----充

29、值交費(fèi)*****************\n");</p><p>  printf("\t\t1.現(xiàn)金交費(fèi)\t\t\t2.個(gè)人網(wǎng)上服務(wù)\n\t\t3.退出\n");</p><p>  printf("請(qǐng)選擇您的操作(1或2或3):");</p><p>  setbuf(stdin,NULL);</p>

30、;<p><b>  do{</b></p><p>  option=getchar();</p><p>  }while(option=='\n'|| option=='\r');</p><p>  setbuf(stdin,NULL);</p><p>  swit

31、ch(option)</p><p><b>  {</b></p><p>  case '1':</p><p><b>  while(t)</b></p><p>  {system("clear");</p><p>

32、;  printf("\t\t*******************話費(fèi)服務(wù)----現(xiàn)金交費(fèi)******************\n");</p><p>  printf("請(qǐng)您(操作員)登錄?。ㄝ斎?#39;exit'返回上一級(jí))\n\n");</p><p>  printf("請(qǐng)輸入用戶名(或exit):");&l

33、t;/p><p>  scanf("%s",&oprname);</p><p>  setbuf(stdin,NULL);</p><p>  if(strcmp(oprname,"exit")==0)</p><p><b>  {</b></p><p

34、><b>  m=0;</b></p><p><b>  break;</b></p><p><b>  }</b></p><p>  setbuf(stdin,NULL);</p><p>  set_disp_mode(STDIN_FILENO,0);&

35、lt;/p><p>  //調(diào)用getpasswd函數(shù)獲得用戶輸入的密碼</p><p>  getpasswd(oprpwd, sizeof(oprpwd));</p><p>  printf("%s password is %s",oprname,oprpwd);</p><p>  getchar();</p&g

36、t;<p>  set_disp_mode(STDIN_FILENO,1);</p><p>  setbuf(stdin,NULL);</p><p>  if((sp=getservbyname(service,"tcp"))==NULL){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(ge

37、tservbyname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  if((hp=gethostbyname(dest))==0){</p><p>  fprintf(stderr,"與接服務(wù)

38、器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  bzero(&sin,sizeof(sin));</p><p>  bcopy(hp->h_addr,

39、&sin.sin_addr,hp->h_length);</p><p>  sin.sin_family=hp->h_addrtype;</p><p>  sin.sin_port=sp->s_port;</p><p>  if((s=socket(AF_INET,SOCK_STREAM,0))==-1){</p>&l

40、t;p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  if(connect(s,(struct sockaddr*)&sin,sizeo

41、f(sin))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b>  close(s);</b></p><p><b>  exit(-1);</b></p><p><b>  

42、}</b></p><p>  sprintf(buf,"phoneSer-0-%s-%s",oprname,oprpwd);</p><p>  if(write(s,buf,rec_length)!=rec_length){ //to server</p><p>  fprintf(stderr,"Write Sock

43、et s ERROR!\n");</p><p>  fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><p>  close(s); </p><p><b>  exit(-1);</b></p><p>

44、;<b>  }</b></p><p>  if(read(s,buf,rec_length)==0){ //get replay from server</p><p>  fprintf(stderr,"Read Socket s Error!\n");</p><p>  fprintf(stderr,"請(qǐng)

45、按任意鍵返回!\n");</p><p>  getchar();</p><p><b>  close(s);</b></p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  if

46、(strcmp(buf,"OK")!=0)</p><p><b>  {</b></p><p>  printf("用戶名不存在或密碼錯(cuò)誤!請(qǐng)按任意鍵重新輸入。\n");</p><p><b>  close(s);</b></p><p>  getc

47、har();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  t=0;</b></p><p><b>  clos

48、e(s);</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  while(m)</b></p><p><b>  {</b></p><p>  sys

49、tem("clear"); </p><p>  printf("\t\t***************話費(fèi)服務(wù)----現(xiàn)金交費(fèi)**************\n");</p><p>  printf("登錄成功!操作員:%s。\t(輸入'exit'返回主菜單)\n\n",oprname);</p>

50、<p>  printf("請(qǐng)輸入手機(jī)號(hào)碼:");</p><p>  scanf("%s",&phoneno);</p><p>  setbuf(stdin,NULL);</p><p>  if(strcmp(phoneno,"exit")==0)</p><

51、p><b>  break;</b></p><p>  if((sp=getservbyname(service,"tcp"))==NULL){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservbyname)!\n");</p><p><b>  

52、exit(-1);</b></p><p><b>  }</b></p><p>  if((hp=gethostbyname(dest))==0){</p><p>  fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p>&l

53、t;b>  exit(-1);</b></p><p><b>  }</b></p><p>  bzero(&sin,sizeof(sin));</p><p>  bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);</p><p>

54、;  sin.sin_family=hp->h_addrtype;</p><p>  sin.sin_port=sp->s_port;</p><p>  if((s=socket(AF_INET,SOCK_STREAM,0))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n"

55、;);</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p>  fprintf(stderr,&quo

56、t;與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b>  close(s);</b></p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  sprintf(buf,"pho

57、neSer-1-%s",phoneno);</p><p>  if(write(s,buf,rec_length)!=rec_length){ //to server</p><p>  fprintf(stderr,"Write Socket s ERROR!\n");</p><p>  fprintf(stderr,"

58、請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><p>  close(s); </p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  if(read(s,buf,rec_l

59、ength)==0){ //get replay from server</p><p>  fprintf(stderr,"Read Socket s Error!\n");</p><p>  fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><

60、;p><b>  close(s);</b></p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  strsplit(buf,v,d);</p><p>  if(strcmp(v[0],"OK&qu

61、ot;)!=0)</p><p><b>  {</b></p><p>  printf("手機(jī)號(hào)碼不存在或輸入錯(cuò)誤!請(qǐng)按任意鍵重新輸入。\n");</p><p><b>  close(s);</b></p><p>  getchar();</p><

62、p>  getchar();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  close(s);</b></p><p>

63、;<b>  while(r)</b></p><p><b>  {</b></p><p>  printf("機(jī)主:%s\t余額:%-10.2f\n",v[1],atof(v[2]));</p><p>  printf("要繼續(xù)操作嗎?(y|n):");</p>

64、<p>  setbuf(stdin,NULL);</p><p>  scanf("%s",ch);</p><p>  setbuf(stdin,NULL);</p><p>  if(strcmp(ch,"y")==0||strcmp(ch,"Y")==0)</p><

65、p><b>  {</b></p><p>  printf("請(qǐng)輸入交費(fèi)金額:");</p><p>  scanf("%s",&money);</p><p>  setbuf(stdin,NULL);</p><p>  if((sp=getservbyname

66、(service,"tcp"))==NULL){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservbyname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p>&

67、lt;p>  if((hp=gethostbyname(dest))==0){</p><p>  fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b><

68、/p><p>  bzero(&sin,sizeof(sin));</p><p>  bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);</p><p>  sin.sin_family=hp->h_addrtype;</p><p>  sin.sin_port=sp-

69、>s_port;</p><p>  if((s=socket(AF_INET,SOCK_STREAM,0))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b>  exit(-1);</b></p><p>

70、<b>  }</b></p><p>  if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b>  close(s);<

71、;/b></p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  sprintf(connbuf,"phoneSer-2-%s-%s-%s",phoneno,money,oprname);</p><p>  if

72、(write(s,connbuf,rec_length)!=rec_length){ </p><p>  fprintf(stderr,"Write Socket s ERROR!\n");</p><p>  fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p&

73、gt;<p>  close(s); </p><p><b>  break;</b></p><p><b>  }</b></p><p>  if(read(s,connbuf,rec_length)==0){ </p><p>  fprintf(stderr,"R

74、ead Socket s Error\n");</p><p>  fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><p><b>  close(s);</b></p><p>  break; </p&

75、gt;<p>  }</p><p><b>  close(s);</b></p><p>  if(strcmp(connbuf,"OK")==0)</p><p><b>  {</b></p><p>  gettim

76、e(nowtime);</p><p>  sprintf(logbuf,"[%s] 給%s[繳費(fèi)成功],充值金額為:%s ",nowtime,phoneno,money); </p><p>  write(wf,logbuf,strlen(logbuf));</p><p>  write(wf,"\n",

77、strlen("\n"));</p><p>  printf("交費(fèi)成功!\n\n");</p><p>  gettime(nowtime);</p><p>  printf("手機(jī)交費(fèi)回執(zhí)單:\n");</p><p>  printf("-------------

78、-----------------------------------------------------\n");</p><p>  printf("機(jī)主:%s 號(hào)碼:%s 金額:%-10.2f 操作員:%s\n日期:%s\n",v[1],phoneno,atof(money),oprname,nowtime);</p><p>  p

79、rintf("------------------------------------------------------------------\n");</p><p>  printf("\n請(qǐng)按任意鍵繼續(xù)!");</p><p><b>  m=0;</b></p><p>  getchar()

80、;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  printf("交費(fèi)失

81、敗!\n");</p><p>  scanf("%s",tmp);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  el

82、se if(strcmp(ch,"n")==0||strcmp(ch,"N")==0)</p><p><b>  break;</b></p><p><b>  else</b></p><p><b>  {</b></p><p>

83、;  printf("輸入錯(cuò)誤!請(qǐng)按任意鍵重新輸入(y或n)。\n");</p><p>  getchar();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

84、<p><b>  }</b></p><p><b>  close(s);</b></p><p><b>  break;</b></p><p><b>  case '2':</b></p><p><b> 

85、 while(n)</b></p><p><b>  {</b></p><p>  system("clear");</p><p>  printf("\t\t*******************話費(fèi)服務(wù)----自助服務(wù)**************\n");</p>&l

86、t;p>  printf("網(wǎng)上手機(jī)交費(fèi)系統(tǒng)登錄!\t(輸入'exit'返回主菜單)\n\n");</p><p>  printf("請(qǐng)輸入手機(jī)號(hào)碼:");</p><p>  scanf("%s",&usrname);</p><p><b>  q=1;<

87、/b></p><p>  setbuf(stdin,NULL);</p><p>  if(strcmp(usrname,"exit")==0)</p><p>  break;</p><p>  set_disp_mode(STDIN_FILENO,0);</p><p>  g

88、etpasswd(usrpwd,sizeof(usrpwd));</p><p>  set_disp_mode(STDIN_FILENO,1);</p><p>  setbuf(stdin,NULL);</p><p>  if((sp=getservbyname(service,"tcp"))==NULL){</p><

89、p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservbyname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  if((hp=gethostbyname(dest))==0){</p&g

90、t;<p>  fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  bzero(&sin,sizeof(sin));<

91、;/p><p>  bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);</p><p>  sin.sin_family=hp->h_addrtype;</p><p>  sin.sin_port=sp->s_port;</p><p>  if((s=socket(AF_

92、INET,SOCK_STREAM,0))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  if(co

93、nnect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b>  close(s);</b></p><p><b>  exit(-1);&l

94、t;/b></p><p><b>  }</b></p><p>  sprintf(connbuf,"phoneSer-3-%s-%s",usrname,usrpwd);</p><p>  if(write(s,connbuf,rec_length)!=rec_length){ </p><p

95、>  fprintf(stderr,"Write Socket s ERROR!\n");</p><p>  fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><p>  close(s); </p><p><b>  ex

96、it(-1);</b></p><p><b>  }</b></p><p>  if(read(s,connbuf,rec_length)==0){ </p><p>  fprintf(stderr,"Read Socket s Error\n");</p><p>  fprint

97、f(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><p><b>  close(s);</b></p><p><b>  exit(-1);</b></p><p><b>  }</b></p>

98、;<p><b>  close(s);</b></p><p>  if(strcmp(connbuf,"failed")==0)</p><p><b>  {</b></p><p>  printf("手機(jī)號(hào)不存在或密碼錯(cuò)誤!請(qǐng)按任意鍵重新輸入。\n");<

99、;/p><p>  getchar();</p><p>  getchar();</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  st

100、rsplit(connbuf,v,d);</p><p><b>  while(q)</b></p><p><b>  {</b></p><p><b>  w=1;</b></p><p>  system("clear");</p>

101、<p>  printf("%s,歡迎您!\n",v[1]);</p><p>  printf("*********************話費(fèi)服務(wù)----網(wǎng)上交費(fèi)************************\n");</p><p>  printf("*\t1.網(wǎng)銀交費(fèi)\t2.手機(jī)余額查詢\t\t3.銀行余額查詢 *\

102、t\t\n*\t4.注銷\t\t5.返回主菜單\t\t0.退出\t\t*\n");</p><p>  printf("*****************************************************************\n");</p><p>  printf("請(qǐng)選擇您的操作:");</p>

103、<p>  setbuf(stdin,NULL);</p><p>  scanf("%c",&chose);</p><p>  setbuf(stdin,NULL);</p><p>  switch(chose)</p><p><b>  {</b></p>

104、<p><b>  case '1':</b></p><p><b>  while(w)</b></p><p><b>  {</b></p><p>  printf("請(qǐng)輸入手機(jī)號(hào)碼(或exit返回):");</p><p&

105、gt;  scanf("%s",&phoneno);</p><p>  if(strcmp(phoneno,"exit")==0)</p><p><b>  {</b></p><p><b>  z=0;</b></p><p><b>

106、;  break;</b></p><p><b>  }</b></p><p>  if((sp=getservbyname(service,"tcp"))==NULL){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservbyname)!\n");&l

107、t;/p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  printf("phoneno-dest:%s",dest);</p><p>  if((hp=gethostbyname(dest))==0){</p>

108、;<p>  fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  bzero(&sin,sizeof(sin));<

109、/p><p>  bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);</p><p>  sin.sin_family=hp->h_addrtype;</p><p>  sin.sin_port=sp->s_port;</p><p>  if((s=socket(AF_I

110、NET,SOCK_STREAM,0))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  if(con

111、nect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b>  close(s);</b></p><p><b>  exit(-1);<

112、;/b></p><p><b>  }</b></p><p>  sprintf(quebuf,"phoneSer-1-%s",phoneno);</p><p>  if(write(s,quebuf,rec_length)!=rec_length){</p><p>  fprintf(

113、stderr,"Write Socket s ERROR!\n");</p><p>  fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><p>  close(s); </p><p><b>  z=0;</b>&l

114、t;/p><p><b>  break;</b></p><p><b>  }</b></p><p>  if(read(s,quebuf,rec_length)==0){ </p><p>  fprintf(stderr,"Read Socket s Error\n");&

115、lt;/p><p>  fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><p><b>  close(s);</b></p><p><b>  z=0;</b></p><p><b>

116、;  break;</b></p><p><b>  }</b></p><p>  if(strcmp(quebuf,"failed")==0)</p><p><b>  {</b></p><p>  printf("手機(jī)號(hào)不存在!請(qǐng)重新輸入。\n&

117、quot;);</p><p><b>  close(s);</b></p><p><b>  z=0;</b></p><p>  getchar();</p><p>  getchar();</p><p><b>  }</b></p&

118、gt;<p><b>  else</b></p><p><b>  {</b></p><p><b>  w=0;</b></p><p><b>  close(s);</b></p><p><b>  }</b&g

119、t;</p><p><b>  }</b></p><p><b>  if(w==0)</b></p><p><b>  {</b></p><p>  printf("請(qǐng)輸入交費(fèi)金額:");</p><p>  scanf(&

120、quot;%s",&money);</p><p><b>  z=1;</b></p><p><b>  }</b></p><p><b>  close(s);</b></p><p><b>  while(z)</b><

121、/p><p><b>  {</b></p><p>  printf("請(qǐng)輸入銀行卡號(hào)(或exit返回):");</p><p>  scanf("%s",&bankno);</p><p>  if(strcmp(bankno,"exit")==0)&l

122、t;/p><p><b>  break;</b></p><p>  setbuf(stdin,NULL);</p><p>  set_disp_mode(STDIN_FILENO,0);</p><p>  getpasswd(bankpwd,sizeof(bankpwd));</p><p>

123、  printf("%s number is %s",bankno,bankpwd);</p><p>  getchar();</p><p>  set_disp_mode(STDIN_FILENO,1);</p><p>  setbuf(stdin,NULL);</p><p>  if((sp=getservby

124、name(service,"tcp"))==NULL){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservbyname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p>

125、;<p>  if((hp=gethostbyname(dest))==0){</p><p>  fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)(gethostbyname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b>

126、</p><p>  bzero(&sin,sizeof(sin));</p><p>  bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);</p><p>  sin.sin_family=hp->h_addrtype;</p><p>  sin.sin_port

127、=sp->s_port;</p><p>  if((s=socket(AF_INET,SOCK_STREAM,0))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b>  exit(-1);</b></p><p

128、><b>  }</b></p><p>  printf("socket\n");</p><p>  if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect

129、)!\n");</p><p><b>  close(s);</b></p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  printf("connect\n");</p>

130、<p>  sprintf(quebuf,"bankSer-0-%s-%s",bankno,bankpwd);</p><p>  if(write(s,quebuf,rec_length)!=rec_length){ </p><p>  fprintf(stderr,"Write Socket s ERROR!\n");</p

131、><p>  fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><p>  close(s); </p><p><b>  break;</b></p><p><b>  }</b></p&

132、gt;<p>  printf("%s\n",quebuf);</p><p>  printf("write\n");</p><p>  if(read(s,quebuf,rec_length)==0){ </p><p>  fprintf(stderr,"Read Socket s Error!

133、\n");</p><p>  fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><p><b>  close(s);</b></p><p><b>  break;</b></p><

134、p><b>  }</b></p><p>  printf("%s\n",quebuf);</p><p>  printf("reading\n");</p><p><b>  close(s);</b></p><p>  if(strcmp(q

135、uebuf,"failed")==0)</p><p><b>  {</b></p><p>  printf("銀行卡不存在或密碼錯(cuò)誤!請(qǐng)重新輸入。\n");</p><p>  getchar();</p><p><b>  }</b></p&g

136、t;<p><b>  else</b></p><p><b>  {</b></p><p>  if((sp=getservbyname(service,"tcp"))==NULL){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(getservb

137、yname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  if((hp=gethostbyname(dest))==0){</p><p>  fprintf(stderr,"與接服務(wù)器會(huì)話時(shí)出錯(cuò)

138、(gethostbyname)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  bzero(&sin,sizeof(sin));</p><p>  bcopy(hp->h_addr,&s

139、in.sin_addr,hp->h_length);</p><p>  sin.sin_family=hp->h_addrtype;</p><p>  sin.sin_port=sp->s_port;</p><p>  if((s=socket(AF_INET,SOCK_STREAM,0))==-1){</p><p>

140、;  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(socket)!\n");</p><p><b>  exit(-1);</b></p><p><b>  }</b></p><p>  printf("quebuf-OK - socket\n");</p>

141、<p>  if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1){</p><p>  fprintf(stderr,"與服務(wù)器會(huì)話時(shí)出錯(cuò)(connect)!\n");</p><p><b>  close(s);</b></p><p><

142、b>  exit(-1);</b></p><p><b>  }</b></p><p>  printf("quebuf-OK - connect\n");</p><p>  sprintf(quebuf,"both-%s-%s-%s-%s",bankno,phoneno,mone

143、y,usrname);</p><p>  printf("%s\n",quebuf);</p><p>  if(write(s,quebuf,rec_length)!=rec_length){ </p><p>  fprintf(stderr,"Write Socket s ERROR!\n");</p>

144、<p>  fprintf(stderr,"請(qǐng)按任意鍵返回!\n");</p><p>  getchar();</p><p>  close(s); </p><p><b>  break;</b></p><p><b>  }</b></p>&

145、lt;p>  printf("quebuf-OK write\n");</p><p>  if(read(s,quebuf,rec_length)==0){</p><p>  printf("quebuf-OK read is error!\n");</p><p>  fprintf(stderr,"Re

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論