LabWindows CVI TCP程序说明
1 本系统框图如下:
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 rverHostName[], 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 支持函数
GetAllTCPHostAddress (char ****address, int **numberOfAddress);
参量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 服务器ver
/****************************************************************************
>>>function :TcpConnect连接 TcpDisconnect断开
>>>intput :N/A
>>>output :p_Port(600) TCP端口
>>>
*****************************************************************************/
int CVICALLBACK TcpConnect (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
int status=0;
char tcp_Port[10];
switch (event)
{
ca EVENT_COMMIT:
GetCtrlVal (panelHandle, PANEL_STRING_SERVER_PORT, tcp_Port);// 获得TCP服务器端口号
sscanf(tcp_Port, "%u", &p_Port);
status = RegisterTCPServer (p_Port, TcpServerCall, 0);
if(!status){ //注册成功 得到主机信息
p_Using=1;
SetCtrlAttribute (panelHandle, PANEL_BUTTON_CONNECT, ATTR_DIMMED, 1);
SetCtrlAttribute (panelHandle, PANEL_BUTTON_DISCONNECT, ATTR_DIMMED, 0);
什么是博客
GetHostInfo();//获取主机信息
}
break;
}
return 0;
}
/****************************************************************************
你负责貌美如花
>>>function :TcpServerCall TCP接收数据处理部分(主机)
>>>intput :Tcpip.client_Handle操作柄
>>>output :
>>>
*****************************************************************************/
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)
打糯米糍粑
{
ca TCP_CONNECT:
Tcpip.client_Handle = handle; // 获得客户端句柄,赋给全局变量
GetTCPPeerAddr (Tcpip.client_Handle, client_Ip, 50); // 获得客户端 IP 地址
SetCtrlVal (panelHandle, PANEL_STRING_CLIENT_IP, client_Ip);
// Client led亮为绿色
SetCtrlAttribute (panelHandle, PANEL_LED_CLIENT, ATTR_ON_COLOR, VAL_GREEN);
必须跨过这道坎
SetCtrlVal (panelHandle, PANEL_LED_CLIENT, 1); // Client led亮
// 设置 TCP 断开方式为自动
SetTCPDisconnectMode (Tcpip.client_Handle, TCP_DISCONNECT_AUTO);
山茶花作文