Files
Leviathan/Library/Internal/include/network/XSocket.h
T
2026-06-01 12:46:52 +02:00

81 lines
1.1 KiB
C++

#pragma once
#include <winsock2.h>
#include "../dump/XException.h"
typedef SOCKET TSOCKET;
struct XSocket
{
XSocket( TSOCKET socket = INVALID_SOCKET )
{
m_socket = socket;
}
~XSocket()
{
}
bool IsValidSocket() const
{
return ( m_socket != INVALID_SOCKET && m_socket != SOCKET_ERROR );
}
bool CreateStreamSocket()
{
m_socket = socket( PF_INET, SOCK_STREAM, IPPROTO_TCP );
if ( IsValidSocket() ) return true;
XError::XSetLastError( "winsock socket() error" );
return false;
}
bool CreateDatagramSocket()
{
m_socket = socket( PF_INET, SOCK_DGRAM, IPPROTO_UDP );
if ( IsValidSocket() ) return true;
XError::XSetLastError( "winsock socket() error" );
return false;
}
virtual bool Destroy()
{
if ( closesocket( m_socket ) == SOCKET_ERROR ) {
return false;
}
m_socket = INVALID_SOCKET;
return true;
}
TSOCKET GetSocketHandle() const
{
return m_socket;
}
operator TSOCKET() const
{
return m_socket;
}
void operator =( TSOCKET sock )
{
m_socket = sock;
}
bool operator ==( const TSOCKET & rh )
{
return m_socket == rh;
}
private:
TSOCKET m_socket;
};