第一范文网 - 专业文章范例文档资料分享平台

LabWindows中TCPip函数分析与实例

来源:用户分享 时间:2025/11/18 0:23:33 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

LabWindows CVI TCP程序说明

1 本系统框图如下:

服务器sever 路由交换机 终端Client 2 TCP函数说明

2.1 Client Functions客户端

ClientTCPRead (unsigned int conversationHandle, void *dataBuffer, size_t dataSize, unsigned int timeOut);

参量1:操作柄、参量2:读入数据、参量3:读入数据长度、参量4:溢出时间。 Return:读出数据的字节长度(可用来校验数据)。

ClientTCPWrite (unsigned int conversationHandle, void *dataPointer, size_t dataSize, unsigned int timeOut);

参量1:操作柄、参量2:输出数据、参量3:读入数据长度、参量4:溢出时间。 Return:写入数据的字节长度(可用来校验数据)。

ConnectToTCPServer (unsigned int **conversationHandle, unsigned int portNumber, char serverHostName[], tcpFuncPtr callbackFunction, void *callbackData, unsigned int timeOut);

参量1:操作柄、参量2:当前端口、参量3:服务器地址、参量4:回调函数、参量5:溢出时间

Return:写入数据的字节长度(可用来校验数据)。

DisconnectFromTCPServer (unsigned int conversationHandle); 参量:操作柄

2.2 Sever Functions服务器端

DisconnectTCPClient (unsigned int conversationHandle); 参量:操作柄

RegisterTCPServer (unsigned int portNumber, tcpFuncPtr callbackFunction, void *callbackData);

参量1:当前端口、参量2:回调函数、参量3:返回数据(NULL)

ServerTCPRead (unsigned int conversationHandle, void *dataBuffer, size_t dataSize, unsigned int timeOut);

参量1:操作柄、参量2:读入数据、参量3:读入数据长度、参量4:溢出时间。 Return:读出数据的字节长度(可用来校验数据)。

ServerTCPWrite (unsigned int conversationHandle, void *dataPointer, size_t dataSize, unsigned int timeOut);

参量1:操作柄、参量2:输出数据、参量3:读入数据长度、参量4:溢出时间。 Return:写入数据的字节长度(可用来校验数据)。

UnregisterTCPServer (unsigned int portNumber);

UnregisterTCPServerEx (unsigned int portNumber, const char localhostAddress[]);

2.3 Support Functions 支持函数

GetAllTCPHostAddresses (char ****addresses, int **numberOfAddresses); 参量1:network interface address、参量2:number of address

GetHostTCPSocketHandle (unsigned int connectionHandle, intptr_t **socketHandle); 获取当前操作柄

GetTCPHostAddr (char buffer[], size_t bufferSize); 获取本机的IP Address

GetTCPHostConnectionAddr (unsigned int connectionHandle, char buffer[], size_t bufferSize);

参量1:操作柄、参量2:输出地址、参量3:数据长度。

GetTCPHostName (char buffer[], size_t bufferSize); 获取主机(本机)用户名。

GetTCPPeerAddr (unsigned int connectionHandle, char buffer[], size_t bufferSize); 参量1:操作柄、参量2:输出地址、参量3:数据长度。 获取对方的IP地址

GetTCPPeerName (unsigned int connectionHandle, char buffer[], size_t bufferSize); 参量1:操作柄、参量2:输出地址、参量3:数据长度。 获取对方的用户名

SetTCPDisconnectMode (unsigned int conversationHandle, int disconnectMode); 参量1:操作柄、参量2:模式选择。

2.4 Other 其它函数

*GetTCPErrorString (int errorNumber); 根据当前错误代码,调出当前错误类型。

char *GetTCPSystemErrorString (void); 获取当前错误代码。

int ProcessTCPEvents (void); 获取当前TCP处理事件。

TCPFreeMemory (void *pointerToMemory); 释放内存。

3 例程说明

3.1 服务器sever

/**************************************************************************** >>>function :TcpConnect连接 TcpDisconnect断开 >>>intput >>>output >>>

*****************************************************************************/ int CVICALLBACK TcpConnect (int panel, int control, int event, void *callbackData, int eventData1, int eventData2) {

int status=0; char tcp_Port[10]; switch (event) {

case EVENT_COMMIT: GetCtrlVal (panelHandle, PANEL_STRING_SERVER_PORT, tcp_Port);// 获得

sscanf(tcp_Port, \

status = RegisterTCPServer (Tcpip.tcp_Port, TcpServerCall, 0); if(!status){ //注册成功 得到主机信息

Tcpip.tcp_Using=1; SetCtrlAttribute

(panelHandle,

PANEL_BUTTON_CONNECT, PANEL_BUTTON_DISCONNECT,

:N/A

:Tcpip.tcp_Port(600) TCP端口

TCP服务器端口号

ATTR_DIMMED, 1); SetCtrlAttribute (panelHandle, ATTR_DIMMED, 0); GetHostInfo();//获取主机信息 }

}

} break;

return 0;

/**************************************************************************** >>>function :TcpServerCall TCP接收数据处理部分(主机) >>>intput

>>>output : >>>

*****************************************************************************/

:Tcpip.client_Handle操作柄

int CVICALLBACK TcpServerCall(unsigned handle, int event, int error, void *callbackData) {

int i;

char client_Ip[50]; char rev_Data[200]; char Rev_Length[50]; switch (event)

{

case TCP_CONNECT:

Tcpip.client_Handle = handle;

// 获得

客户端句柄,赋给全局变量 GetTCPPeerAddr (Tcpip.client_Handle, client_Ip, 50); 地址

// 获得客户端 IP

SetCtrlVal (panelHandle, PANEL_STRING_CLIENT_IP, client_Ip); Client led亮为绿色

VAL_GREEN); led亮

SetCtrlVal (panelHandle, PANEL_LED_CLIENT, 1);

// Client

//

//

SetCtrlAttribute (panelHandle, PANEL_LED_CLIENT, ATTR_ON_COLOR,

设置 TCP 断开方式为自动

break;

SetTCPDisconnectMode (Tcpip.client_Handle, TCP_DISCONNECT_AUTO);

case TCP_DATAREADY: memset (rev_Data, '\\0', 200); 清0

// 数组

Tcpip.tcp_Rev_Length = ServerTCPRead (Tcpip.client_Handle, rev_Data, 200, 1000);// 从TCP服务器读数据

//de_protocol(data, read_len, ret_data, &ret_len); for(i=0;i

Tcpip.tcp_Rev_Data[i]=rev_Data[i];

// 协议解析

//取出数据

}

SetCtrlVal (panelHandle, PANEL_TEXTBOX_TCP_ASCII, \接收到数据:\SetCtrlVal (panelHandle, PANEL_TEXTBOX_TCP_ASCII, rev_Data); SetCtrlVal (panelHandle, PANEL_TEXTBOX_TCP_ASCII, \SetCtrlVal

(panelHandle,

PANEL_TEXTBOX_TCP_ASCII,

\

SetCtrlVal (panelHandle, PANEL_TEXTBOX_TCP_ASCII, \ sprintf(Rev_Length, \from TCP Client: %d

Bytes\

搜索更多关于: LabWindows中TCPip函数分析与实例 的文档
LabWindows中TCPip函数分析与实例.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c1k1fa8buge6tck19hli2_1.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top