123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #pragma once
- #define TCPIPSCF_API
- #define TCPIPSCF_C_API extern "C"
- #include "SCF.h"
- #include "ResDataObject.h"
- #include <sys/socket.h> // Linux socket API
- #include <netdb.h> // 网络数据库操作
- #include <unistd.h> // 系统调用
- #include <fcntl.h> // 文件控制
- #include <netinet/in.h> // 网络地址
- #include <arpa/inet.h> // IP地址转换
- #include <algorithm> // 转换函数
- #include <cctype> // 字符处理
- // 声明导出函数
- 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);
- };
|