⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 faultcenter.cpp

📁 一个HTTP协议的封装类
💻 CPP
字号:
#include "StdAfx.h"
#include "FaultCenter.h"
#include <stdio.h>
#include <WinSock2.h>
namespace fs
{
	namespace error
	{
		BOOL FaultCenter::TryCatch( LPCTSTR type,LPCTSTR funName,INT retval )
		{
			if (_T("socket")==type)
			{
				return ProcessSocket(funName,retval);
			}

			return TRUE;
		}

		BOOL FaultCenter::ProcessSocket( LPCTSTR funName,INT retval )
		{
			if (_T("WSAStartup")==funName)
			{
				if (0!=retval)
				{
					PrintfErrorCode(funName);
					return FALSE;
				}
			}
			else if (_T("socket")==funName)
			{
				if (INVALID_SOCKET==retval)
				{
					PrintfErrorCode(funName);
					return FALSE;
				}
			}
			else if (_T("bind")==funName)
			{
				if (SOCKET_ERROR==retval)
				{
					PrintfErrorCode(funName);
					return FALSE;
				}
			}
			else if (_T("listen")==funName)
			{
				if (SOCKET_ERROR ==retval)
				{
					PrintfErrorCode(funName);
					return FALSE;
				}
			}
			else if (_T("accept")==funName)
			{
				if (INVALID_SOCKET ==retval)
				{
					PrintfErrorCode(funName);
					return FALSE;
				}
			}
			else if (_T("recv")==funName)
			{
				if (SOCKET_ERROR==retval)
				{
					PrintfErrorCode(funName);
					return FALSE;
				}
			}
			else if (_T("send")==funName)
			{
				if (SOCKET_ERROR==retval)
				{
					PrintfErrorCode(funName);
					return FALSE;
				}
			}
			else if (_T("connect")==funName)
			{
				if (SOCKET_ERROR==retval)
				{
					PrintfErrorCode(funName);
					//ExitProcess(-1); 
					return FALSE;
				}
			}

			return TRUE;
		}

		void FaultCenter::PrintfErrorCode( LPCTSTR funName,DWORD errorCode )
		{
			#ifdef _DEBUG
				#ifdef _UNICODE
					wprintf(_T("%s error code:%d\n"),funName,errorCode);
				#else
					printf("%s error code:%d\n",funName,errorCode);
				#endif

				TCHAR szBuf[100]; 
				TCHAR caption[30];
				LPVOID lpMsgBuf;

				FormatMessage(
					FORMAT_MESSAGE_ALLOCATE_BUFFER | 
					FORMAT_MESSAGE_FROM_SYSTEM ,
					NULL,
					errorCode,
					MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),
					(LPTSTR) &lpMsgBuf,
					0, NULL );

				wsprintf(szBuf, 
					_T("%s failed with error %d: \r\r%s"), 
					funName, errorCode, lpMsgBuf); 

				wsprintf(caption, 
					_T("%s error"), 
					funName); 

				MessageBox(NULL, szBuf, caption, MB_OK); 

				LocalFree(lpMsgBuf);

			#endif
		}
		void FaultCenter::PrintfErrorCode( LPCTSTR funName)
		{
			#ifdef _DEBUG
				PrintfErrorCode( funName,WSAGetLastError() );
			#endif
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -