Click here to Skip to main content
Click here to Skip to main content

The Ultimate TCP/IP Home Page

By , 25 Aug 2007
 
ultimatetcp-ip42_docs.zip
UTCP_IP42.chi
UTCP_IP42.chm
ultimatetcp-ip42_samples.zip
Ultimate TCP-IP
ActiveX
BuildAll
All.dsw
MinDependency_Dlls
MinDependency_EvalDlls
UTDns
dns.bmp
DNS.rgs
DNSPropPage.rgs
icon_fin.ico
UTDns.def
UTDns.dsp
UTDns.dsw
UTDnsps.def
UTFinger
finger.bmp
Finger.rgs
FingerProp.rgs
icon_fin.ico
UTFinger.def
UTFinger.dsp
UTFinger.dsw
UTFingerps.def
UTFingerServ
fingerse.bmp
FingerServ.rgs
FingerServProp.rgs
icon_fin.ico
UTFingerServ.def
UTFingerServ.dsp
UTFingerServ.dsw
UTFingerServps.def
utftp
ftp.bmp
Ftp.rgs
FtpPropPage.rgs
icon_fin.ico
UTFtp.def
UTFtp.dsp
UTFtp.dsw
UTFtpps.def
utftpserv
FtpSercPropPage.rgs
ftpserve.bmp
FtpServer.rgs
FtpServPropPage.rgs
icon_fin.ico
UTFtpServ.def
UTFtpServ.dsp
UTFtpServ.dsw
UTFtpServps.def
UTHistory
history.bmp
History.rgs
HistoryPropPage.rgs
icon1.ico
UTHistory.def
UTHistory.dsp
UTHistory.dsw
UTHistoryps.def
uthttp
http.bmp
Http.rgs
HttpPropPage.rgs
icon_fin.ico
UTHttp.def
UTHttp.dsp
UTHttp.dsw
UTImap4
icon_fin.ico
imap4.bmp
IMAP4.rgs
IMAP4PropPage.rgs
UTImap4.def
UTImap4.dsp
UTImap4.dsw
UTImap4ps.def
UTMail
icon_fin.ico
mail.bmp
Mail.rgs
Mail2.rgs
MailPropPage.rgs
MailPropPage2.rgs
UTMail.def
UTMail.dsp
UTMail.dsw
UTMailps.def
UTMailServ
icon_fin.ico
mailserv.bmp
MailServ.rgs
MailServPropPage.rgs
UTMailServ.def
UTMailServ.dsp
UTMailServ.dsw
UTMailServps.def
UTMsg
icon_fin.ico
message.bmp
Message.rgs
UTMsg.def
UTMsg.dsp
UTMsg.dsw
UTMsgps.def
UTNntp
icon_fin.ico
nntp.bmp
Nntp.rgs
NntpPropPage.rgs
UTNntp.def
UTNntp.dsp
UTNntp.dsw
UTNntpps.def
utping
icon_fin.ico
ping.bmp
Ping.rgs
PingProp.rgs
UTPing.def
UTPing.dsp
UTPing.dsw
UTPingps.def
UTSocket
icon_fin.ico
socket.bmp
Socket.rgs
SocketPropPage.rgs
UTSocket.def
UTSocket.dsp
UTSocket.dsw
UTSocketps.def
Demos
DemoMaster.dsw
MsgMapper
res
mainfram.bmp
MsgMapper.ico
MsgMapperDoc.ico
Toolbar.bmp
Prop2
dns.jpg
DSITools.dsp
finger.jpg
Help
CONTEXT.CDX
Context.CHJ
CONTEXT.DBF
Context.DTO
CONTEXT.FPT
Context.HH
Context.rbh
Context.RTF
DIALOG.CID
DSITools.akw
DSITools.doc
DSITools.err
DSITools.hh
DSITOOLS.HLP
DSITools.hpj
DSITools.hpr
DSITools.hpt
DSITools.kkw
DSITools.rbh
DSITools.rtf
icon1.ico
icon2.ico
ping.jpg
Prop2.dsp
Prop2.dsw
SPLSHNetTools.BMP
tracert.jpg
whois.jpg
QuickMailer
icon1.ico
properties.GIF
QuickMailer.dsp
QuickMailer.dsw
small2.ico
SplashQM.BMP
Examples
Client
ASP
headline.gif
smallogo.gif
MFC
Imap4
IMAPClient.dsp
IMAPClient.dsw
res
IMAPClient.ico
IMAPClientDoc.ico
Toolbar.bmp
Nntp
NNTPclient.dsp
NNTPclient.dsw
res
Filecopy.avi
Findcomp.avi
NNTPclient.ico
SDK
DNS
Data.ico
DNSClient.dsp
DNSClient.dsw
Finger
FingerClient.dsp
FingerClient.dsw
icon1.ico
Ftp
FTPClient.dsp
FTPClient.dsw
FTPClient.vcproj.CODEPROJECT.Nish.user
FTPClient.vcproj.vspscc
icon1.ico
History
icon1.ico
log.dsp
log.dsw
Http
HTTPClient.dsp
HTTPClient.dsw
icon1.ico
Mail
icon1.ico
test.dsp
test.dsw
MX Lookup
Data.ico
MXLookup.dsp
MXLookup.dsw
Ping
Ping_c.dsp
Ping_c.dsw
UDP
Monitor
Monitor.dsp
Monitor.dsw
Trace
Trace.dsp
Trace.dsw
VisualBasic
Dns
DNSTest.frm
DNSTest.vbp
DNSTest.vbw
icon1.ico
Finger
FingerTest.frm
FingerTest.vbp
FingerTest.vbw
Ftp
FtpTest.frm
FtpTest.frx
FtpTest.vbp
FtpTest.vbw
icon1.ico
History
HistoryTest.frm
HistoryTest.frx
HistoryTest.vbp
HistoryTest.vbw
icon1.ico
Http
HttpTest.frm
HttpTest.frx
HttpTest.vbp
HttpTest.vbw
icon1.ico
Imap4
icon1.ico
IMAP4Test.frm
IMAP4Test.frx
IMAP4Test.SUP
IMAP4Test.vbp
IMAP4Test.vbw
Mail
DecodedMessage.frm
DecodedMessage.frx
icon1.ico
MailTest.frm
MailTest.frx
MailTest.vbp
MailTest.vbw
MartsMail
AutoHelp.bas
Bld.bmp
bullet1.bmp
Clip01.ico
COPY.BMP
CUT.BMP
Form1.frm
frmAbout.frm
frmAbout.frx
frmMain.frm
frmMain.frx
frmSmtp.frm
frmSmtp.frx
icon1.ico
Itl.bmp
Mail01a.ico
Mail03.ico
Mail16b.ico
MailClient.vbp
MailClient.vbw
PASTE.BMP
Print.bmp
Progress.frm
Progress.frx
SAVE.BMP
ServerInfo.frm
ServerInfo.frx
Undrln.bmp
Nntp
icon1.ico
NntpTest.frm
NntpTest.frx
NntpTest.vbp
NntpTest.vbw
PostNDecode.frm
Ping
icon1.ico
PingTest.frm
PingTest.frx
PingTest.vbp
PingTest.vbw
Search.avi
Socket
icon1.ico
SEARCH.AVI
SocketTest.frm
SocketTest.frx
SocketTest.vbp
SocketTest.vbw
UDPSocket
UDPTest.vbp
UDPTest.vbw
UdptestMain.frm
UdptestMain.frx
Master.dsw
Server
ASP
MFC
SampleServer
icon1.ico
res
Sample_S.clw
Sample_S.dsp
SDK
AccessControlServerDemo
AccessControlServerDemo.dsp
icon1.ico
Finger
fing_s.dsp
icon1.ico
Ftp
ftp_s.dsp
icon1.ico
Http
HTTP_s.dsp
icon1.ico
Mail
icon1.ico
server.dsp
server.dsw
SPLASHMlS.BMP
VisualBasic
Finger
FingerServTest.frm
FingerServTest.frx
FingerServTest.vbp
FingerServTest.vbw
Ftp
FTPServTest.frm
FTPServTest.frx
FTPServTest.vbp
FTPServTest.vbw
Http
HTTPServerTest.frm
HTTPServerTest.frx
HttpServerTest.vbp
HttpServerTest.vbw
Mail
AdministratorForm.frm
AdministratorForm.frx
MailServerTest.frm
MailServerTest.frx
MailServerTest.vbp
MailServerTest.vbw
service
Service.dsp
test.mak
svrtest
client.mak
SVRTest.dsp
Security
Examples
Client
Echo
EchoClient.dsp
EchoClient.dsw
EchoClientS.dsp
FTPs
client.dsp
client.dsw
FtpClientS.dsp
icon1.ico
Https
client.dsp
client.dsw
HttpClientS.dsp
icon1.ico
Imap4s
IMAPClient.dsp
IMAPClient.dsw
IMAPClientS.dsp
res
IMAPClient.ico
IMAPClientDoc.ico
Toolbar.bmp
Mail
icon1.ico
icon2.ico
MailClientS.dsp
test.dsp
test.dsw
MasterS.dsw
Server
Echo
EchoServer.dsp
EchoServer.dsw
EchoServerS.dsp
FTPs
FTPs.dsp
FTPs.dsw
FtpServerS.dsp
icon1.ico
Https
HTTP_s.dsp
HTTP_s.dsw
HttpServerS.dsp
icon1.ico
Mail
icon1.ico
MailServerS.dsp
server.dsp
server.dsw
SPLASHMlS.BMP
Test_Del
Test_Del.dsp
Test_Del.dsw
Util
CertManager
CertManager.dsp
CertManager.dsw
ultimatetcp-ip42_src.zip
Include
Include
Lib
TestCert.pfx
Res
certif.bmp
certif_m.bmp
icon_cer_l.ico
icon_cer_s.ico
key.bmp
location.bmp
location_m.bmp
location_s.bmp
location_s_m.bmp
store.bmp
store_m.bmp
SecureServers
Source
UTSecureLayer
UTSecureLayer.dsp
UTSecureLayer.dsw
Servers
source
//=================================================================
//  class: CUT_NNTPClient
//  class: CUT_NNTPGroupList
//  class: CUT_NNTPArticleList  
//  File:  nntpc.h
//
//  Purpose:
// 
//  Declaration of NNTP client class and its helper linked 
//  list classes CUT_NNTPGroupList & CUT_NNTPArticleList.
//
//  RFC 977
// 
//=================================================================
// Ultimate TCP/IP v4.2
// This software along with its related components, documentation and files ("The Libraries")
// is � 1994-2007 The Code Project (1612916 Ontario Limited) and use of The Libraries is
// governed by a software license agreement ("Agreement").  Copies of the Agreement are
// available at The Code Project (www.codeproject.com), as part of the package you downloaded
// to obtain this file, or directly from our office.  For a copy of the license governing
// this software, you may contact us at legalaffairs@codeproject.com, or by calling 416-849-8900.
//=================================================================

#ifndef NNTP_CLIENT_H
#define NNTP_CLIENT_H

#define LINE_BUFFER_SIZE            256

#define CUT_SORT_NAME_ASCENDING     1000
#define CUT_SORT_NAME_DESCENDING    1001

// base TCP/IP class 
#include "ut_clnt.h" 
#include "UTDataSource.h" 
#include "UTErr.h" 
#include "UTMessage.h"
#include "ut_strop.h"

    // Posting attributes enumeration
    enum PostingAttrib {
        CUT_POST_YES,
        CUT_POST_NO,
        CUT_POST_MODERATED
        };

//===================================
//  class: CUT_NNTPGroupList
//===================================
class CUT_NNTPGroupList {

    typedef struct tagNewsGroupList {
        LPSTR       lpszNewsGroupName;  // Title of the news group
        int         nStartId;           // ID of the start Article
        int         nEndId;             // ID of the end article
        int         nArticlesNumber;    // number of articles available
        int         nPostingAllowed;    // Posting attribute YES NO or MODERATED
        
        tagNewsGroupList *next;         // next group in the linked list
    } newsGroupList;
 
protected:      
    newsGroupList   *m_groupList;       // the work structure for the linked list of News groups

public:
    
    CUT_NNTPGroupList();                // constructor
    virtual ~CUT_NNTPGroupList();       // destructor

    // Read strings from the data soutce or file and load them to the group list.
    virtual int     Load(CUT_DataSource &source);
    int     Load(LPCTSTR filename) { CUT_FileDataSource ds(filename); return Load(ds); }

    // Loop through the list of available news groups available 
    // and save the summary information for each group to the data source 
    // or file 
    virtual int     Save(CUT_DataSource &dest);
    int     Save(LPCTSTR filename) { CUT_FileDataSource ds(filename); return Save(ds); }
    
    // Add a new NewsGroupList node to the list
    virtual int     AddGroup(LPCSTR newsGroup);

    // Remove a news group from the list
    virtual int     DeleteGroup(long index);

    //  Find the first news group that has a substring which matches the string passed
    virtual int     FindFirst(LPSTR match);

    //  Find a group the next avilable news group that has a substring that 
    //  matches a specific string
    virtual int     FindNext(LPSTR match, long index);

    //  Get the number of available news group in the linked list
    long    GetCount() const;

    //   Get the title of the news group specified by the index
    LPCSTR  GetGroupTitle(long index) const;

    //  Update the Group information   
    long    SetGroupInfo(LPCSTR newsGroup, int number, int first, int last);

    //  Remove all entries in the Group list linked list and reclaim
    //  the memory allocated
    int     Empty();


};  // end of class CUT_NNTPGroupList
//====================================================================


//====================================================================
// UT_ARTICLEINFOA STRUCTURE - used internally (ascii)
//====================================================================
	// v4.2 change - added constructor - probably not necessary
    typedef struct UT_ArticleInfoATag {  
		UT_ArticleInfoATag() : lpszSubject(NULL), lpszAuthor(NULL), 
							  lpszDate(NULL), lpszMessageId(NULL), 
							  lpszReferences(NULL){}
        long    nArticleId;         // Article ID
        LPSTR   lpszSubject;        // Article lpszSubject
        LPSTR   lpszAuthor;         // the from field in the Article message

        LPSTR   lpszDate;           // date of posting
        LPSTR   lpszMessageId;      // the RFC822 Message ID of the Article
        LPSTR   lpszReferences;     // Any refrence for reply 
        int     nByteCount;         // Number of bytes
        int     nLineCount;         // Number of lines
        int     nStatus;            // read, new, etc.
        
        UT_ArticleInfoATag *next;    // pointer to the next item
    } UT_ARTICLEINFOA;

	//====================================================================
// UT_ARTICLEINFO STRUCTURE - Holds _TCHAR - for user interface
//====================================================================
	// v4.2 change - added constructor - probably not necessary
    typedef struct UT_ArticleInfoTag {  
		UT_ArticleInfoTag() : lpszSubject(NULL), lpszSubjectCharset(NULL), lpszAuthor(NULL), 
							  lpszAuthorCharset(NULL), lpszDate(NULL), lpszMessageId(NULL), 
							  lpszReferences(NULL){}
        long    nArticleId;         // Article ID
        LPTSTR   lpszSubject;        // Article lpszSubject
		LPTSTR	 lpszSubjectCharset;  // charset if decoded
        LPTSTR   lpszAuthor;         // the from field in the Article message
		LPTSTR	 lpszAuthorCharset;   // charset if decoded
        LPTSTR   lpszDate;           // date of posting
        LPTSTR   lpszMessageId;      // the RFC822 Message ID of the Article
        LPTSTR   lpszReferences;     // Any refrence for reply 
        int     nByteCount;         // Number of bytes
        int     nLineCount;         // Number of lines
        int     nStatus;            // read, new, etc.
        
        UT_ArticleInfoTag *next;    // pointer to the next item
    } UT_ARTICLEINFO;

//====================================================================
// class: CUT_NNTPArticleList   
//====================================================================

class CUT_NNTPArticleList {

protected: 
    UT_ARTICLEINFOA    *m_listArticles;    // pointer to artticle s linked list

	CUT_StringList      m_OverviewFormat;  // The format of the over view the articles database on the server

public:
    
    CUT_NNTPArticleList();          // constuctor
    virtual ~CUT_NNTPArticleList(); // destructor
	void	SetOverViewFormat(CUT_StringList &overViewList);

    // Read articles from the data soutce or file 
    virtual int     Load(CUT_DataSource &source);
    int     Load(LPCTSTR filename) { CUT_FileDataSource ds(filename); return Load(ds); }

    // Save articles to the data soutce or file 
    virtual int     Save(CUT_DataSource &dest);
    int     Save(LPCTSTR filename) { CUT_FileDataSource ds(filename); return Save(ds); }

    // extraact new articles
    virtual int     ExtractNewArticles(CUT_StringList &m_listNewArticles);

    // add new article to the article list
    virtual int     AddArticle(UT_ARTICLEINFOA & articleInfo);

    // add an XOVER formated string as a header
    virtual int     AddArticleXOVER(LPSTR newsArticle);

    // remove an article from the list
    virtual int     DeleteArticle(long index);

    // Remove all articles from the linked list
    int     Empty();

    // find the first match of the string in the article lpszSubject
    virtual int     FindFirst(LPSTR match);

    // find the next match of the string in the article lpszSubject
    virtual int     FindNext(LPSTR match, long index);

    // get the number of articles in the list
    long    GetCount() const;

    // populate an article structure information with the indexed article
    UT_ARTICLEINFOA  *GetArticleInfo(long index) const;

};



//=================================================================
//  class: CUT_NNTPClient
//=================================================================
class CUT_NNTPClient:public CUT_WSClient{

public:
    CUT_NNTPClient();                       // constructor
    virtual ~CUT_NNTPClient();              // destructor

protected:

    CUT_StringList      m_listNewArticles;  // list of new articles
	CUT_StringList      m_OverviewFormat;  // The format of the over view the articles database on the server
    CUT_NNTPGroupList   m_listGroups;       // news Groups linked list class
    CUT_NNTPArticleList m_listArticles;     // news articles linked list class

	UT_ARTICLEINFO		m_artW;				// wide char articleinfo for NGetArticleInfo interface


    int         m_nConnectPort;             // port number to connect to
    int         m_nConnectTimeout;          // wait for connect time out 
    int         m_nReceiveTimeout;          // wait for receive time out 
    int         m_nPostingAllowed;          // is posting allowed in the server
    BOOL        m_bConnected;               // are we connected 
    char        *m_szSelectedNewsGroup;     // the currently selected group name
    int         m_nSelectedEstNum;          // number of articles available on the server upon establishing connection 
    int         m_nSelectedFirst;           // id of the first article availabl on the srver 
    int         m_nSelectedLast;            // id of the last article availabl on the srver 



protected:

    //////////////////////////////////////////////////////////
    //  Helper functions
    //////////////////////////////////////////////////////////
	int		GetOverviewFormat();


    // Receives a line of data
    int     ReceiveLineUntil(LPSTR data,int maxDataLen,int timeOut);

    // Receives data from the current connection directly to the data source
    int     ReceiveToDSUntil(   CUT_DataSource &dest, 
                                int fileType,
                                long *bytesReceived,
                                int timeOut, 
                                LPCSTR untilString);
    
    // Provides us with a an RFC 822 year 2000 complient date stamp
    int     NGetNNTPDateStamp(LPSTR buf, int bufLen);

    // Empty the new article list
    void    EmptyNewArticlesList();

public:
  
    //////////////////////////////////////////////////////////
    //  Generic server communication functions
    //////////////////////////////////////////////////////////

    // Connect to the NNTP server
    virtual int     NConnect(LPCSTR HostName, LPSTR User = NULL, LPSTR Pass = NULL);
#if defined _UNICODE
    virtual int     NConnect(LPCWSTR HostName, LPWSTR User = NULL, LPWSTR Pass = NULL);
#endif

    // Close the conection with the NNTP server
    virtual int     NClose();

    // Attempt to authorize this client with the server
    virtual int     NAuthenticateUserSimple(LPSTR User, LPSTR Pass);
#if defined _UNICODE
    virtual int     NAuthenticateUserSimple(LPWSTR User, LPWSTR Pass);
#endif

    // Returns the status of the m_canPost memory variable
    virtual int     NCanPost();

    // Contact the server and verify our ability to post.  May
    // be neccessary if posting is restricted in some news groups.
    virtual int     NForceCheckCanPost();

    // Retreives date from nntp server
    virtual int     NGetServerDate(LPSTR date, int nChars);
#if defined _UNICODE
    virtual int     NGetServerDate(LPWSTR date, int nChars);
#endif

    //////////////////////////////////////////////////////////
    //  News group relative functions
    //////////////////////////////////////////////////////////

    // All groups or new groups only.
    virtual int     NGetNewsGroupList(int type);

    // Select a news group
    virtual int     NSelectNewsGroup(LPCSTR newsGroup);
#if defined _UNICODE
    virtual int     NSelectNewsGroup(LPCWSTR newsGroup);
#endif 

    // Save the group list to a data source or file
    virtual int     NSaveNewsGroupList(CUT_DataSource &dest);
    int     NSaveNewsGroupList(LPCTSTR file) { CUT_FileDataSource ds(file); return NSaveNewsGroupList(ds); }

    // Read group list from a data source or file
    virtual int     NLoadNewsGroupList(CUT_DataSource &dest);
    int     NLoadNewsGroupList(LPCTSTR file) { CUT_FileDataSource ds(file); return NLoadNewsGroupList(ds); }

    // Get the number of groups available
    long    NGetNewsGroupCount() const;

    // Get the title of the indexed group
    LPCSTR  NGetNewsGroupTitle(int index) const;

	// v4.2 Refactored - added interface with LPSTR and LPWSTR params
	int NGetNewsGroupTitle(LPSTR title, size_t maxSize, int index, size_t *size);
#if defined _UNICODE
	int NGetNewsGroupTitle(LPWSTR title, size_t maxSize, int index, size_t *size);
#endif

	//////////////////////////////////////////////////////////
    //  Article relative functions
    //////////////////////////////////////////////////////////

    // Get the number of available articles in the selected group
    long    NGetNewArticlesCount() const;  

    // Save the articles list to a data source or file 
    virtual int     NSaveArticleHeaderList(CUT_DataSource &dest);
    int     NSaveArticleHeaderList(LPCTSTR file) { CUT_FileDataSource ds(file); return NSaveArticleHeaderList(ds); }

    // Load the articles list from a data source or file
    virtual int     NLoadArticleHeaderList(CUT_DataSource &source);
    int     NLoadArticleHeaderList(LPCTSTR file) { CUT_FileDataSource ds(file); return NLoadArticleHeaderList(ds); }
	    
    // Add to existing list, replace existing list, merge, etc.
    virtual int     NGetArticleList(int type);

   
    // Get an article by message id into the data source or file
    virtual int     NGetArticle(LPCSTR nArticleId, CUT_DataSource &dest);
#if defined _UNICODE
    virtual int     NGetArticle(LPCWSTR nArticleId, CUT_DataSource &dest);
#endif
    int     NGetArticle(LPCSTR nArticleId, LPCTSTR filename) { CUT_FileDataSource ds(filename); return NGetArticle(nArticleId, ds); }
#if defined _UNICODE
    int     NGetArticle(LPCWSTR nArticleId, LPCTSTR filename) { CUT_FileDataSource ds(filename); return NGetArticle(AC(nArticleId), ds); }
#endif

    // Get the number of articles available 
    long    NGetArticleHeaderCount() const;

    // Get the article headers information 
    UT_ARTICLEINFO *NGetArticleInfo(int index);

    // Post article as a whole message where the user have already taken care of the RFC 822 format
    virtual int     NPostArticle(CUT_Msg & message);

    // Format the article into an RFC 822 and post it
    virtual int     NPostArticle(LPCSTR PostGroup, LPCSTR PostFrom, LPCSTR PostlpszSubject, LPCSTR PostArticle);
#if defined _UNICODE
    virtual int     NPostArticle(LPCWSTR PostGroup, LPCWSTR PostFrom, LPCWSTR PostlpszSubject, LPCWSTR PostArticle);
#endif

    //////////////////////////////////////////////////////////
    //  Property Set / Get functions
    //////////////////////////////////////////////////////////

    // Set/Get connection port number
    int     SetConnectPort(int port);
    int     GetConnectPort() const;

    // Set/Get connect time out
    int     SetConnectTimeout(int secs);
    int     GetConnectTimeout() const;

    // Set/Get receive time out
    int     SetReceiveTimeout(int secs);
    int     GetReceiveTimeout() const;

	


    //////////////////////////////////////////////////////////
    //  Virtual notification functions
    //////////////////////////////////////////////////////////
protected:
    
    virtual int     OnNGetNewsGroupList(LPCSTR newGroupTitle);

    virtual int     OnNGetArticleList(LPCSTR artId, LPCSTR subject,LPCSTR author,LPCSTR date, LPCSTR refrence,LPCSTR BytesCount, LPCSTR NumberOfLines, LPCSTR xrefs );

    virtual BOOL    OnSendArticleProgress(long bytesSent,long totalBytes);
	long				GetResponseCode(LPCSTR data);
};

#endif

By viewing downloads associated with this article you agree to the Terms of use and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

The Ultimate Toolbox
Web Developer
Canada Canada
Member
Organisation
263 members

In January 2005, David Cunningham and Chris Maunder created TheUltimateToolbox.com, a new group dedicated to the continued development, support and growth of Dundas Software’s award winning line of MFC, C++ and ActiveX control products.
 
Ultimate Grid for MFC, Ultimate Toolbox for MFC, and Ultimate TCP/IP have been stalwarts of C++/MFC development for a decade. Thousands of developers have used these products to speed their time to market, improve the quality of their finished products, and enhance the reliability and flexibility of their software.

Permalink | Advertise | Privacy | Mobile
Web01 | 2.6.130516.1 | Last Updated 25 Aug 2007
Article Copyright 2007 by The Ultimate Toolbox
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid