|
#ifndef BOGDAN_RECHI_DDDOI_RTCLASS_H__
#define BOGDAN_RECHI_DDDOI_RTCLASS_H__
#include <Winsock2.h>
#include <atlconv.h>
class TraceClass
{
BOOL m_bConnected;
SOCKET m_sock;
CString m_szName;
public:
CString m_szError;
TraceClass()
{
WSADATA wsaData;
m_szError.Empty();
m_bConnected=FALSE;
if (WSAStartup(0x0202,&wsaData))
{
m_szError.Format(_T("Cannot startup sockets library!"));
return;
}
}
BOOL SetTarget(LPCTSTR szIP, LPCTSTR szName, short nPort)
{
USES_CONVERSION;
struct sockaddr_in serv;
struct sockaddr_in client;
m_szName.Format(_T("%s"), szName);
if (m_bConnected)
{
shutdown(m_sock, 2);
closesocket(m_sock);
}
if ((m_sock=socket(AF_INET, SOCK_DGRAM, 0))==
INVALID_SOCKET)
{
m_szError.Format(_T("Cannot create socket!"));
return FALSE;
}
memset((void *)&serv, 0, sizeof(serv));
serv.sin_family = AF_INET;
serv.sin_addr.s_addr = inet_addr(T2A(const_cast<LPTSTR>(szIP)));
serv.sin_port = htons(nPort);
memset((void *)&client, 0, sizeof(client));
client.sin_family = AF_INET;
try
{
if (bind(m_sock, (struct sockaddr*)&client,
sizeof(client))==SOCKET_ERROR)
throw CString(_T("Error on binding the socket!"));
if (!(m_bConnected=SOCKET_ERROR != connect(m_sock,
(struct sockaddr*)&serv, sizeof(serv))))
throw CString(_T("Error on connecting to socket!"));
}
catch (CString &szMan)
{
m_szError=szMan;
shutdown(m_sock, 2);
closesocket(m_sock);
return FALSE;
}
return TRUE;
}
BOOL Trace(LPCTSTR fmt, ...)
{
USES_CONVERSION;
if (!m_bConnected) return FALSE;
COleDateTime now = COleDateTime::GetCurrentTime();
CString sz, buff;
char szMan[101];
va_list param;
va_start( param, fmt);
buff.FormatV(fmt, param);
va_end( param );
gethostname(szMan, 100);
sz.Format(_T("%s"), A2T(szMan));
sz=sz.Left(18);
sz+=_T("\"")+m_szName+_T("\" ")+now.Format(_T("[%H:%M:%S] "))+buff;
if (send(m_sock, (const char *)(LPCTSTR)sz, sz.GetLength()*sizeof(TCHAR), 0)
==SOCKET_ERROR)
{
m_szError.Format(_T("Error on sending message!"));
return FALSE;
}
return TRUE;
}
~TraceClass()
{
shutdown(m_sock, 2);
closesocket(m_sock);
WSACleanup();
}
};
#endif
|
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.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.