• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用VC實現在線訂貨

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    目前電子商務采用的處理模式大多是訂貨用戶在網頁上填寫訂單,發出訂貨請求,接著WEB 服務器 上運行CGI程序對用戶填寫的數據進行一定的處理后,發送到專用的電子商務服務器中,服務器則對發來的用戶數據進行一系列校驗,驗證用戶身份及證實所需的訂貨信息完
       目前電子商務采用的處理模式大多是訂貨用戶在網頁上填寫訂單,發出訂貨請求,接著WEB服務器上運行CGI程序對用戶填寫的數據進行一定的處理后,發送到專用的電子商務服務器中,服務器則對發來的用戶數據進行一系列校驗,驗證用戶身份及證實所需的訂貨信息完整后,將訂單寫入數據庫中,并向WEB服務器中的CGI程序發回一個交易成功的信息,證實交易完成。  

      我們利用VC++的AppWizard創建一個支持MFC類的控制臺模式程序(An application that support MFC),命名為“Eshopping”,修改主程序文件EShopping.cpp如下:  

      #include "stdafx.h"  

      #include "EShopping.h"  

      #include "afxsock.h"  

      typedef struct OrderSet //用戶自己定義的一個訂貨單結構  

      {  

       char UserName[24];  

       char Password[12];  

       char Goods[24];  

       int Count;  

       char Addr[256];  

      }ORDER;  

      ……//省略部分機器生成代碼  

      int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])  

      { if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))  

       {……//省略部分機器生成代碼  

       }else //程序處理的主體  

      {cout〈〈"Content-type:Text/HTML\n\n";  

      //輸出回顯給用戶的HTML的頭  

       cout〈〈"〈HTML〉〈HEAD〉〈TITLE〉〈/TITLE〉〈/HEAD〉〈BODY〉\n";  

       char *StreamSize=getenv("CONTENT_LENGTH"); //開始取得用戶填寫的信息  

       long dataSize=atol(StreamSize);  

       char* buffer[dataSize]=new char[dataSize];  

       ::memset(buffer,0,dataSize);  

       cin〉〉buffer; //取得用戶填寫的信息  

       char Ware[5][256]; //這個數組用于從獲取的字串中分離用戶填寫的數據  

       ::memset(Ware,0,5?256);  

       char* p=buffer;  

       int Row=0,Col=0;  

       while(Row〈5)//開始處理獲取的字串  

       {if(*p= ='='){//若在字串中遇到“=”號,意味著用戶填寫的一個項的開始  

      Col=0;  

      p++;  

      while(*p!='&&') { //若在字串中遇到“&&”號,意味著用戶填寫的一個項的結束  

      if(*p= ='+') *p=' '; //字串中的“+”號要轉成空格  

      Ware[Row][Col++]=*p;  

      p++; }  

       Row++; }  

       p++;  

       }  

       ORDER Order;//處理完字串后,把用戶填寫的數據填寫到一個ORDER結構中  

       memcpy(Order.UserName,Ware[0],24);  

       memcpy(Order.Password,Ware[1],12);  

       memcpy(Order.Goods,Ware[2],24);  

       int Counts=atoi(Ware[3]);  

       Order.Count=Counts;  

       memcpy(Order.Addr,Ware[4],256);  

       WORD wVersionRequested; //開始連接到服務器上  

       WSADATA wsaData;  

       hostent FAR *hp;  

       wVersionRequested = MAKEWORD( 2, 0 );  

       WSAStartup( wVersionRequested, &&wsaData );  

       SOCKET sockClient= INVALID_SOCKET;  

       sockaddr_in addr; //填寫一個sockaddr_in結構  

       hp = gethostbyname("Alex"); //假設服務器名為“Alex”  

       memcpy(&&(addr.sin_addr),hp-〉h_addr,hp-〉h_length);  

       addr.sin_family = AF_INET;  

       addr.sin_port =htons(1025); //假設服務器偵聽端口為1025  

      sockClient= socket(AF_INET, SOCK_STREAM, 0);  

       connect(sockClient, (sockaddr *)&&addr, sizeof(addr));  

      //連接到服務器  

       send(sockClient,(char*)&&Order,sizeof(ORDER),0);  

      //發送用戶填寫的信息  

      while(TRUE)  

      //等待服務器發來確認信息,完成交易  

       {if(int length=recv(sockClient,buffer,dataSize)〉0)  

       {……//省略校驗回送信息的代碼  

      cout〈〈"cout〈〈"We have got your order!";  

       break;  

       }  

       }  

       closesocket(sockClient); //關閉socket  

       WSACleanup( );  

       cout〈〈"〈/BODY〉〈/HTML〉";  

       return 0;  

       }  

       return nRetCode;  

      }  

      上述程序只是一個獲取英文電子訂單并向服務器發送訂單數據的CGI程序,假設服務器程序已經運行于服務器上,并在1025端口上進行偵聽,驗證后發送交易成功與否的信息。  

      以上程序在Windows 98、VC++ 6.0環境下調試通過,在OmniHTTPd 2.0 Alpha 8 服務器上運行正常。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>