client/EterLib/NetDatagramSender.cpp

58 lines
1.1 KiB
C++

#include "StdAfx.h"
#include "NetDatagramSender.h"
BOOL CNetDatagramSender::SetSocket(const char * c_szIP, WORD wPortIndex)
{
return SetSocket(inet_addr(c_szIP), wPortIndex);
}
BOOL CNetDatagramSender::SetSocket(DWORD dwAddress, WORD wPortIndex)
{
m_isSocket = TRUE;
m_dwAddress = dwAddress;
m_wPortIndex = wPortIndex;
m_Socket = socket(AF_INET, SOCK_DGRAM, 0);
memset(&m_SockAddr, 0, sizeof(SOCKADDR_IN));
m_SockAddr.sin_family = AF_INET;
m_SockAddr.sin_addr.s_addr = dwAddress;
m_SockAddr.sin_port = htons(wPortIndex);
return TRUE;
}
BOOL CNetDatagramSender::Send(const void * pBuffer, int iSize)
{
assert(isSocket());
int iSendingLength = sendto(m_Socket, (const char *)pBuffer, iSize, 0, (PSOCKADDR)&m_SockAddr, sizeof(SOCKADDR_IN));
if (iSendingLength < 0)
{
Tracef("Failed sending packet\n");
return FALSE;
}
return TRUE;
}
BOOL CNetDatagramSender::isSocket()
{
return m_isSocket;
}
CNetDatagramSender::CNetDatagramSender()
{
m_isSocket = FALSE;
m_dwAddress = 0;
m_wPortIndex = 1000;
m_Socket = 0;
memset(&m_SockAddr, 0, sizeof(SOCKADDR_IN));
}
CNetDatagramSender::~CNetDatagramSender()
{
}