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

📄 mod_tcpclient.h

📁 Windows CE下的客户端TCP/IP程序
💻 H
字号:
#ifndef _MOD_TCPCLIENT_H
#define _MOD_TCPCLIENT_H

/************************************************************************/
/* 定义TCP模块通知父窗口的消息                                          */
/************************************************************************/

#define WM_USER_GPS_TCP		WM_USER	+ 1000

/************************************************************************/
/*  消息WM_USER_GPS_TCP的WPARAM可选值
/*	LPARAM为一字符串,描述消息的内容   
/************************************************************************/

#define TCP_BASE			0
#define TCP_ERROR			TCP_BASE + 1  // TCP通信出现错误
#define TCP_DISCONNECT		TCP_BASE + 2  // TCP链路断开
#define TCP_DATA_RECV       TCP_BASE + 3  // TCP通信接收到数据
#define TCP_SUCCESS			TCP_BASE + 4  // TCP链路建立成功


/************************************************************************/
/********************窗口主程序的响应模块示例 ***************************

ON_MESSAGE(WM_USER_GPS_TCP, OnTcpMessage)

LRESULT OnTcpMessage(WPARAM wParam, LPARAM lParam)
{
    char  buffer[1024];
    int   buflen;
    CString   msg;

    // 假定szIp,nPort是所连接的服务器的IP地址和端口
    
    switch(wParam)
    {
      case  TCP_ERROR:
        msg = (LPCTSTR)lParam;  // lParam是错误的消息内容
        // 错误处理
        modTcp_End(szIp, nPort); // 卸载TCP模块
        break;

      case  TCP_DISCONNECT:
        msg = (LPCTSTR)lParam;  // lParam是TCP链路断开的消息内容
        // 链路断开的处理
        modTcp_End(szIp, nPort);  // 卸载TCP 模块
        break;

      case  TCP_DATA_RECV:
        while(! modTcp_GetBuff(szIp,nPort, buffer, &buflen))
        {
            // 对从缓冲区中取出的数据进行处理,例如加入写串口的队列
        }
        break;
    }
}
************************************************************************/




/************************************************************************/
/* TCP模块初始化,启动TcpClient线程
/* 参数:@ 服务器IP地址
/*		 @ 服务器端口号
/*		 @ 数据缓冲队列最大容量,按照一块1024字节计算,
/*			例如 nBuffMax=32 ,表示容量为32K的缓冲队列
/*		 @ 窗口句柄,该窗口接收TCP模块发出的消息
/*		 @ 发给TCP服务器的初始化串
/*		 @ 初始化串的长度
/************************************************************************/
extern "C" bool 	modTcp_Init(LPCTSTR szIPaddr, UINT nPort, UINT nBuffMax, HWND hWnd,
						LPCTSTR initStr, UINT ninitLen);

// PASCAL EXPORT

/************************************************************************/
/* TCP模块终止  
/* 参数: @ 服务器IP地址 
/*       @ 服务器端口号
/* 返回值: 成功结束TCP模块返回true,否则返回false
/*
/************************************************************************/
extern "C" bool  modTcp_End(LPCTSTR szIPaddr, UINT nPort);


/************************************************************************/
/* 将待发送数据加入TCP模块的发送队列
/* 参数: @ 服务器IP地址 
/*       @ 服务器端口号
/*		 @ 待发送的数据
/*		 @ 待发送数据的长度
/* 返回值: 成功将数据加入发送队列返回true,否则返回false
/*
/************************************************************************/
extern "C" bool  modTcp_Send(LPCTSTR szIPaddr, UINT nPort, const char *pMsg, int nLen);


/************************************************************************/
/* 由数据缓冲队列取出数据                                               
/* 参数:@ 存放缓冲数据的地址
/*		 @ 取得数据的长度
/* 返回值:取得缓冲数据则返回true,未取得则返回false
/* 注意:
/*       @当主线程收到消息的wParam值为TCP_DATA_RECV时,在一个循环内不断调用该函数,
/*   直到该函数返回false为止,将收到的数据做进一步处理,比如写串口等;
/*       @当主线程收到消息的wParam值为TCP_DISCONNECT时,应该不断调用该函数,
/*   将缓冲区内的有效数据取完。
/************************************************************************/
extern "C" bool  modTcp_GetBuff(LPCTSTR szIPaddr, UINT nPort ,char *  pBuff, int *pLen);
#endif

⌨️ 快捷键说明

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