Click here to Skip to main content
15,898,035 members
Articles / Desktop Programming / MFC

Peer-to-Peer Communicator and File Transfer

Rate me:
Please Sign up or sign in to vote.
4.33/5 (57 votes)
14 Aug 20013 min read 393.5K   21.9K   167  
Get youself a peer-to-peer communicator and exchange files across a network.
// NetException.h: interface for the CNetException class.
//
// Written by Marat Bedretdinov (maratb@hotmail.com)
// Copyright (c) 2000.
//
// This code may be used in compiled form in any way you desire. This
// file may be redistributed unmodified by any means PROVIDING it is 
// not sold for profit without the authors written consent, and 
// providing that this notice and the authors name is included. 
//
// This file is provided "as is" with no expressed or implied warranty.
// The author accepts no liability if it causes any damage whatsoever.
// It's free - so you get what you pay for.//

#if !defined(AFX_NETEXCEPTION_H__C8305B92_33D1_4983_B276_501A47CFDF21__INCLUDED_)
#define AFX_NETEXCEPTION_H__C8305B92_33D1_4983_B276_501A47CFDF21__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#define ERR_NET_UNKNOWN_ERROR                                                                   -1
#define ERR_NET_FAILED_SEND                                                                             100
#define ERR_NET_FAILED_READ                                                                             101
#define ERR_NET_NOT_CONNECTED                                                                   102
#define ERR_NET_FAILED_CREATE_SOCKET                                                    103
#define ERR_NET_FAILED_LISTEN                                                                   104
#define ERR_NET_FAILED_BIND                                                                             105
#define ERR_NET_FAILED_CONNECT                                                                  106
#define ERR_NET_FAILED_INIT_DLL                                                                 107
#define ERR_NET_UNKNOWN_PROTOCOL_TYPE                                                   110
#define ERR_NET_FAILED_RESOLVE_ADDRESS                                                  112
#define ERR_NET_FAILED_SELECT                                                                   113
#define ERR_NET_MSG_DATA_CORRUPTED                                                              115
#define ERR_NET_WRONG_SIGNATURE                                                                 116
#define ERR_NET_CONNECTION_MANAGER_NOT_INITIALIZED                              117
#define ERR_NET_STORAGE_MANAGER_NOT_INITIALIZED                                 118
#define ERR_NET_BAD_CONNECTION_HANDLER                                                  119
#define ERR_NET_FILE_OPEN_FAILED                                                                120
#define ERR_NET_MSG_UKNOWN_TYPE                                                                 121
#define ERR_NET_FILE_INVALID_FLAG                                                               122
#define ERR_NET_FILE_HOST_UNKNOWN                                                               123
#define ERR_NET_FILE_UNKNOWN                                                                    123
#define ERR_NET_FAILED_ACCEPT_SOCKET                                                    124
#define ERR_NET_CANNOT_RESOLVE_PEER_ADDRESS                                             125
#define ERR_NET_CANNOT_RESOLVE_LOCAL_ADDRESS                                    126
#define ERR_NET_NOT_YET_IMPL                                                                    127
#define ERR_NET_MUST_BE_OVERRIDDEN                                                              128
#define NET_ERR_CANNOT_CHECK_FOR_REQUEST                                                129
#define ERR_NET_CANNOT_CREATE_THREADS                                                   130
#define ERR_NET_NO_MSG_FACTORY															131
#define ERR_NET_NO_CALLBACK_REGISTERED													132
#define ERR_NET_BAD_CAST													            133
#define ERR_NET_NO_CONSUMER_ADDRESS_PROVIDED										    134
#define ERR_NET_FILE_TRANSFER_ABORTED													135
#define ERR_NET_CANNOT_RETRIEVE_FROM_EMPTY_QUEUE										136
#define ERR_NET_FAILED_SOCKOPT															137

extern long GetLastSocketError();
extern const char* GetSocketErrorDescription(long);

class CNetException  
{
public:
			     CNetException():m_nNetErr(0) {}
                 CNetException(int nNetErr, const char* strFuncName, const char* strDescr = 0):
                   m_nNetErr(nNetErr)
				 { 
				   if (strFuncName) m_strFuncName = strFuncName;
                   if (strDescr) m_strDescr = strDescr;
				 }

				CNetException(const CNetException& x);
										
		virtual	CNetException& operator=(const CNetException& x)
				{
				  m_nNetErr = x.m_nNetErr;
				  m_strFuncName = x.m_strFuncName;
				  m_strDescr = x.m_strDescr;
				  return *this;
				}

		virtual CNetException* clone() const { return new CNetException; }

        virtual  ~CNetException();
            int  GetErrCode() {return m_nNetErr;}
	  const char* GetErrDescr() {return m_strDescr.c_str();}
      const char* GetErrFunc() {return m_strFuncName.c_str();}

protected:
        int    m_nNetErr;
        string m_strFuncName;
        string m_strDescr;
};

class CNetSockException : public CNetException
{
public:
        CNetSockException(int nNetErr, int nSockErr, const char* strFuncName):
          CNetException(nNetErr, strFuncName),
          m_nSockErr(nSockErr) {}

		CNetSockException(const CNetSockException&);

		virtual CNetException& operator=(const CNetException& x)
		{
		  CNetException::operator=(x);
		  const CNetSockException& sx = dynamic_cast<const CNetSockException&>(x);
		  m_nSockErr = sx.m_nSockErr;
          return *this;
		}

		virtual CNetException* clone() const { return new CNetSockException; }

        virtual ~CNetSockException() {}

        int             GetSockErrCode() {return m_nSockErr;}
		const char*		GetSockErrDescr() {return GetSocketErrorDescription(m_nSockErr);}
protected:
						CNetSockException() {}
protected:
        int     m_nSockErr;
};

class CNetObject;

class CNetMsgException : public CNetException
{
public:
                                CNetMsgException(int nNetErr, const char* strFuncName);
        virtual                 ~CNetMsgException();

		virtual CNetException* clone() const { return new CNetMsgException; }

                        void    Dump();
protected:
								CNetMsgException() {}
};

class CNetFileException : public CNetException
{
public:
        CNetFileException(int nNetErr, const char* strFuncName):
          CNetException(nNetErr, strFuncName) {}
        virtual ~CNetFileException() {}

		virtual  CNetException* clone() const { return new CNetFileException; }
protected:
	    CNetFileException() {}
};

#endif // !defined(AFX_NETEXCEPTION_H__C8305B92_33D1_4983_B276_501A47CFDF21__INCLUDED_)

By viewing downloads associated with this article you agree to the Terms of Service 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 has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here



Comments and Discussions