⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcpclnt.h

📁 湖北水文黄石试点集中器代码
💻 H
字号:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Copyright (C), 2005, TopBond Tech. Co., Ltd.
* File name:       TCPCLNT.H
* Module name:     以客户端方式建立TCP连接的模块
* Author/Date:     WuHuan  06/02/14 
* Version:         Ver 1.0
* Description:     以客户端方式(或称主动方式)建立TCP连接系列函数的头文件
* Others:          如有改动,请在下面的历史记录登记,谢谢合作!

------------------History-----------------------------
* Modifier/Date:    //修订人及修订日期
* Modify Reason:    //修订原因
* Modification:     //修订的内容和位置的简要说明
------------------------------------------------------
* Modifier/Date:    //修订人及修订日期
* Modify Reason:    //修订原因
* Modification:     //修订的内容和位置的简要说明
------------------------------------------------------
 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#if !defined( _TCPCLNT_H )
#define _TCPCLNT_H


enum CONN_STATE { CLOSED=0, START, OPEN, FAIL };

struct SERVER_ID
{
   char       IPStr[20];   //接收IP地址的字符串数组
   int        Port;        //存储端口号的变量
   SERVER_ID& operator = (SERVER_ID& );
};

class TCPClientManager
{
protected:
   int               Conno;      //存储连接号的变量
   CONN_STATE        ConnState;  //存储TCP的状态
   
   int netprocessnum;

   unsigned long     Timeout;		 //超时的变量 = 0: no timeout
   unsigned long     StartTick;  //计时的起点
   
////////////////////////////////////////////add by wuhuan 2006.7.14
   unsigned long     TalkTimeout;		 //超时的变量 = 0: no timeout
   unsigned long     TalkStartTick;  //计时的起点   
   
   
   int   ServerNum;

   struct SERVER_ID* pHost;      //定义结构体指针变量

public:
	 void SetServerNum(int num)
	 {
		  ServerNum = (num+1); 
	 };
	
	
   TCPClientManager( );         //定义构造函数,对类的数据进行初始化
   ~TCPClientManager( );        //定义析构函数,释放类占用的内存空间
   
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**
**  函    数 :Init( struct SERVER_ID* pSvrID );
**
**  功能描述 :获取服务端的IP地址和端口号;
**    
**  参    数 :结构体SERVER_ID的指针变量;
**    
**  返 回 值 : 无;
**             
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
   void Init( struct SERVER_ID* pSvrID );
 
   
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**
**  函    数 :SetTimeoutCnt( long NumTick );
**
**  功能描述 :用于设置Timeout的时间;
**    
**  参    数 :NumTick为设置超时时间的Tick值,一个Tick值约为55ms,
**             如果NumTick=0则表明不用设置超时;
**    
**  返 回 值 : 0 正常返回值;
**             
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
   int SetTimeoutCnt( long NumTick );
 
   
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**
**  函    数 :IsTimeout( );
**
**  功能描述 :检查是否超时;
**    
**  参    数 :无;
**    
**  返 回 值 : 
**       0   :没有超时;
**       1   ;已经超时;
**         
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */   
   int IsTimeout( );


/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**
**  函    数 :CONN_STATE Running( );
**
**  功能描述 :作为TCPCliend的主要运行函数。包括三项处理:
**             1) 连接处于CLOSED状态,则打开一个新的连接,
**                连接打开成功后,其状态由 CLOSED转换到 START。 
**             2) 连接处于START状态,则检查连接是否建立,
**                同时检查超时时间,如果连接建立,其状态由START转换到 OPEN;
**                如果时间超时连接还未建立,则关闭连接,状态又回到CLOSED。
**             3) 连接处于OPEN状态,则检查连接是否有异常,或是被对方关闭,
**                如果没有检查到则一直保持OPEN状态,否则将关闭TCP连接,
**                其状态回到CLOSED。 该函数返回TCP连接的状态。
**    
**  参    数 :无;
**    
**  返 回 值 :返回TCP连接的状态。
**    CLOSED : 连接处于关闭状态;
**    START  : 连接正在建立中;
**    OPEN   : 连接建立成功;
**    FAIL   : 函数处理错误;
**         
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */  
   CONN_STATE Running( );
 
   CONN_STATE GetConnState( )
   {
   	return (ConnState);
   	};
//////////////////////////////////////add by zjs on 2006.03.06   	
   SERVER_ID* GetServer_ID()
   {
   	
   	return(pHost);
   	};	
////////////////////////////////////////////////   
   
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**
**  函    数 :WriteData( char* DatBuf, int DatLen );
**
**  功能描述 :通过TCP连接发送数据。该函数对于连接状态处于OPEN时才有效。
**    
**  参    数 :
**  char* DatBuf: 存放发送数据的缓冲区BUFF地址;
**  int DatLen  : 待发送的字节长度;
**    
**  返 回 值 :
**      >=0  : 正常返回,返回值为实际发送的字节数;
**     EBADF :无效连接号,发送操作未执行;
**   ENOBUFS :没有缓冲区空间;
** 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */   
   int WriteData( char* DatBuf, int DatLen );
   
   
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**
**  函    数 :ReadData( char* DatBuf, int DatLen );
**
**  功能描述 :检查TCP是否有数据可读取,如果有则从指定连接号中
**             读取网络接口接收到的数据。该函数对于连接状态处于OPEN时才有效。
**    
**  参    数 :
**  char* DatBuf: 存放读出数据的缓冲区BUFF地址;
**  int DatLen  : 缓冲区的字节长度;
**    
**  返 回 值 : 
**       >0  : 正常返回,返回值为实际读取的字节数;
**       =0  : 无可读取的数据;
**    EBADF  :无效连接号,读取操作未执行;  
**
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
   int ReadData( char* DatBuf, int DatLen );
   
   
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
**
**  函    数 :Close( );
**
**  功能描述 :关闭已打开的连接;
**    
**  参    数 :无;
**    
**  返 回 值 : 
**       0   :正常关闭;
**     EBADF :无效连接号,关闭操作未执行; 
**         
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
   int Close( );

/////////////////////////////////////////////add by wuhuan 2007.7.14
   int SetTalkTimeoutCnt( long NumTick );
   int TalkIsTimeout( );
   
};




//对定义的类的对象的指针作外部声明
extern class TCPClientManager* TCPManager[]; 

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -