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

📄 udp.h

📁 vxworks下的UDP驱动程序
💻 H
字号:
/* udpServer.c - UDP server example */
/*
DESCRIPTION
This file contains the server-side of the vxWorks UDP example code.
The example code demonstrates the usage of several BSD 4.4-style
socket routine calls.
*/

#ifndef _UDP_H
#define _UDP_H

#ifdef __cplusplus
extern "C" {
#endif

#include "Macro.h"

extern void Udp_GlobalSet( WORD nServerNum, WORD nConnNum );
extern short Udp_AddServer( BYTE *ServerIP, WORD wPort );
extern short Udp_AddConnection( short iSvrNo, BYTE *ClientIP, WORD wClientPort, short *piGroupNo );
extern BOOLEAN Udp_SetConnPort( short iConnNo, WORD wClientPort );
extern BOOLEAN Udp_GetConnNo( short iSvrNo, DWORD dwClientIP, WORD wPort, short *pwConnNo, short *pwGroupNo );
extern int  Upd_Sendto ( short iConnNo,BYTE* pbyBuff,WORD wLen );
extern WORD Udp_ReadMsg( short iGroupNo, short *piConnNo, BYTE *pbyMsgBuf, WORD wBufLen, WORD *pwRead, WORD *pwQueueIDRead );


typedef struct sockaddr         tagSockAddr;        // 用于存储套接字地址结构体的一般形式
typedef struct sockaddr *       tagPSockAddr;       // 用于存储套接字地址结构体的指针形式
typedef struct sockaddr_in      tagSockAddrIn;      // 用于存储一个IP地址和端口号
typedef struct sockaddr_in *    tagPSockAddrIn;     // 用于存储一个IP地址和端口号的指针形式
typedef struct in_addr          tagIn_Addr;         // inet address

//=============================================================================

#define C_UDP_NUM_SVR             (  8)         // UDP 连接最大服务器数目
#define C_UDP_NUM_CONN            ( 16)         // UDP 连接最大组数

#define C_UDP_VOL_BUF             (512)         // 一个UDP报文的最大长度


typedef struct {                                // UDP 连接组参数信息
    short       iSvrNo;                         // 服务器编号即数组下标
    short       iGroupNo;                       // 连接组号(动态生成)
    DWORD       dwClientIP;                     // 客户机IP
    WORD        wClientPort;                    // 客户机端口号(动态更新)
}tagUdpConn, *tagPUdpConn;


typedef struct {                                // UDP 服务器参数信息
    WORD        wPort;                          // UDP 连接网络端口号
    DWORD       dwServerIP;                     // 服务器IP关键字
    int         iSockFD;                        // 套接字编号
}tagUdpServer, *tagPUdpServer;

typedef struct
{
    short           nConnMaxNum;                // 链接最大数目
    short           nConnNum;                   // 链接数目
    short           nServerMaxNum;              // 服务器最大数目
    short           nServerNum;                 // 服务器数目
    short           nGroupNum;                  // 链接组数目
    tagUdpConn      tConnArray[C_UDP_NUM_CONN]; // 链接组队列
    tagUdpServer    tSvrArray[C_UDP_NUM_SVR];   // 服务器队列
}tagUdpCtrl;



typedef struct {                                // UDP 报文控制信息结构
    WORD        wQueueID;                       // 报文ID
    WORD        wConnNo;                        // 报文所对应的UDP连接序号
    WORD        wGroupNo;                       // 报文所对应的UDP组号
    WORD        wLength;                        // 报文长度
    WORD        wHead;                          // 报文头指针
    WORD        wRear;                          // 报文尾指针
    WORD        wCRC;                           // 报文内容校验码
    WORD        wTag;                           // 报文附加属性
}tagUdpMsgCtrl, *tagPUdpMsgCtrl;


typedef struct {                                    // 上行中转报文队列
    tagQueueCtrl    tQueueCtrl;                     /* 队列控制变量  */
    tagUdpMsgCtrl   tUdpMsgCtrl[CONST_NUM_RPTU];    /* 报文控制变量  */
    BYTE            byReportBuf[CONST_VOL_RPTU];    // 中转报文缓冲区
}tagQueueUdpMsg, *tagPQueueUdpMsg;

#ifdef __cplusplus
}
#endif

#endif //_UDP_H

⌨️ 快捷键说明

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