#pragma once #define TCPIPSCF_API #define TCPIPSCF_C_API extern "C" #include "SCF.h" #include "ResDataObject.h" #include // Linux socket API #include // 网络数据库操作 #include // 系统调用 #include // 文件控制 #include // 网络地址 #include // IP地址转换 #include // 转换函数 #include // 字符处理 // 声明导出函数 TCPIPSCF_C_API SCF* GetSCF(); TCPIPSCF_C_API void ReleseSCF(SCF* p); // TCP/IP实现的SCF类 class TCPIPSCF_API TcpipSCF : public SCF { int hCom; // 在Linux中不使用,保留兼容性 // 内部连接方法 int ConnectTcpip(const char* ip, unsigned short port, unsigned int timeout); public: TcpipSCF(); virtual ~TcpipSCF(); // 连接方法 int Connect(ResDataObject& Connectprameters, PacketParser callback = NULL, SCF_TRANSFERTYPE TransferType = SCF_NORMAL_TRANSFER, unsigned int CommunicateTimeout = 75000); // 断开连接 void Disconnect(); // 检查连接状态 bool isConnected(); // 获取连接类型 const char* GetConnectionType(); // 发送数据包 int SendPacket(const char* pPacket, unsigned int length, unsigned int timeout); int SendPacket(SCFPacket* pPacket, unsigned int timeout); protected: string* m_pIp; // IP地址 unsigned short m_Port; // 端口号 bool Connected; // 连接状态 int Socketfd; // 套接字描述符 sockaddr_in sa; // 地址结构 int Error; // 错误代码 // 读取数据 int ReadData(char* pPacket, unsigned int length, unsigned int timeout); // 主机名解析 hostent* Gethostbyname(const char* name1); // 服务名解析 servent* Getservbyname(const char* name, const char* prot); };