Files
interactive/fhs/arcmond2/external/include/ethernet.h
T
2026-08-07 17:38:18 +09:00

58 lines
1.0 KiB
C++

#ifndef _ETHERNET_H_
#define _ETHERNET_H_
#include "commdef.h"
#include "interface.h"
#ifdef _WIN32
#include "Winsock2.h"
#endif
#ifdef _WIN32
class ARCLIB_API EthernetInterface : public ArcInterface
#else
class EthernetInterface : public ArcInterface
#endif
{
public:
EthernetInterface();
~EthernetInterface();
bool init(const char *szIPAddr, short nPort = 7890);
int send(sIF_CMD_BLOCK *ifData);
int recv(sIF_CMD_BLOCK *ifData);
int syncSend(sIF_CMD_BLOCK *ifData);
int getMTU();
// helper functions
public:
void *getDeviceHandle();
SOCKET getSocket();
private:
BOOL ClearReadBuffer();
BOOL ClearWriteBuffer();
BOOL ClearReadWriteBuffer();
int WaitForReply(SOCKET s, long time_sec, long time_usec);
SOCKET m_socket;
#ifdef _WIN32
CRITICAL_SECTION m_cs;
void requirelock()
{
EnterCriticalSection(&m_cs);
}
void releaselock()
{
LeaveCriticalSection(&m_cs);
}
#elif defined(__unix_like__)
#endif
struct sockaddr_in agentaddr;
struct sockaddr_in manager_addr;
};
#endif