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

📄 packet.h

📁 udt.sdk.4.0,UDP的可靠传输项目UDT(开源),采用了类似TCP的滑动窗口协议,在 udt.sdk.3.2 的基础上作了改进,使适用于网格计算
💻 H
字号:
/*****************************************************************************Copyright � 2001 - 2007, The Board of Trustees of the University of Illinois.All Rights Reserved.UDP-based Data Transfer Library (UDT) version 4National Center for Data Mining (NCDM)University of Illinois at Chicagohttp://www.ncdm.uic.edu/This library is free software; you can redistribute it and/or modify itunder the terms of the GNU Lesser General Public License as published bythe Free Software Foundation; either version 2.1 of the License, or (atyour option) any later version.This library is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU LesserGeneral Public License for more details.You should have received a copy of the GNU Lesser General Public Licensealong with this library; if not, write to the Free Software Foundation, Inc.,59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.*****************************************************************************//*****************************************************************************This header file contains the definition of UDT packet structure and operations.*****************************************************************************//*****************************************************************************written by   Yunhong Gu [gu@lac.uic.edu], last updated 03/17/2007*****************************************************************************/#ifndef __UDT_PACKET_H__#define __UDT_PACKET_H__//#include "common.h"#include "udt.h"class CChannel;class CPacket{friend class CChannel;friend class CSndQueue;friend class CHash;public:   int32_t& m_iSeqNo;                   // alias: sequence number   int32_t& m_iMsgNo;                   // alias: message number   int32_t& m_iTimeStamp;               // alias: timestamp   int32_t& m_iID;			// alias: socket ID   char*& m_pcData;                     // alias: data/control information   static const int m_iPktHdrSize;	// packet header sizepublic:   CPacket();   ~CPacket();      // Functionality:      //    Get the payload or the control information field length.      // Parameters:      //    None.      // Returned value:      //    the payload or the control information field length.   int getLength() const;      // Functionality:      //    Set the payload or the control information field length.      // Parameters:      //    0) [in] len: the payload or the control information field length.      // Returned value:      //    None.   void setLength(const int& len);      // Functionality:      //    Pack a Control packet.      // Parameters:      //    0) [in] pkttype: packet type filed.      //    1) [in] lparam: pointer to the first data structure, explained by the packet type.      //    2) [in] rparam: pointer to the second data structure, explained by the packet type.      //    3) [in] size: size of rparam, in number of bytes;      // Returned value:      //    None.   void pack(const int& pkttype, void* lparam = NULL, void* rparam = NULL, const int& size = 0);      // Functionality:      //    Read the packet vector.      // Parameters:      //    None.      // Returned value:      //    Pointer to the packet vector.   iovec* getPacketVector();      // Functionality:      //    Read the packet flag.      // Parameters:      //    None.      // Returned value:      //    packet flag (0 or 1).   int getFlag() const;      // Functionality:      //    Read the packet type.      // Parameters:      //    None.      // Returned value:      //    packet type filed (000 ~ 111).   int getType() const;      // Functionality:      //    Read the extended packet type.      // Parameters:      //    None.      // Returned value:      //    extended packet type filed (0x000 ~ 0xFFF).   int getExtendedType() const;      // Functionality:      //    Read the ACK-2 seq. no.      // Parameters:      //    None.      // Returned value:      //    packet header field (bit 16~31).   int32_t getAckSeqNo() const;      // Functionality:      //    Read the message boundary flag bit.      // Parameters:      //    None.      // Returned value:      //    packet header field [1] (bit 0~1).   int getMsgBoundary() const;      // Functionality:      //    Read the message inorder delivery flag bit.      // Parameters:      //    None.      // Returned value:      //    packet header field [1] (bit 2).   bool getMsgOrderFlag() const;      // Functionality:      //    Read the message sequence number.      // Parameters:      //    None.      // Returned value:      //    packet header field [1] (bit 3~31).   int32_t getMsgSeq() const;protected:   uint32_t m_nHeader[4];               // The 128-bit header field   iovec m_PacketVector[2];             // The 2-demension vector of UDT packet [header, data]   int32_t __pad;   void operator = (const CPacket&) {}};////////////////////////////////////////////////////////////////////////////////struct CHandShake{   int32_t m_iVersion;          // UDT version   int32_t m_iType;             // UDT socket type   int32_t m_iISN;              // random initial sequence number   int32_t m_iMSS;              // maximum segment size   int32_t m_iFlightFlagSize;   // flow control window size   int32_t m_iReqType;          // connection request type: -1: response, 1: initial request, 0: rendezvous request   int32_t m_iID;		// socket ID};#endif

⌨️ 快捷键说明

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