#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