Struct.h
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:3k
源码类别:

P2P编程

开发平台:

Visual C++

  1. /*
  2. *  Openmysee
  3. *
  4. *  This program is free software; you can redistribute it and/or modify
  5. *  it under the terms of the GNU General Public License as published by
  6. *  the Free Software Foundation; either version 2 of the License, or
  7. *  (at your option) any later version.
  8. *
  9. *  This program is distributed in the hope that it will be useful,
  10. *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. *  GNU General Public License for more details.
  13. *
  14. *  You should have received a copy of the GNU General Public License
  15. *  along with this program; if not, write to the Free Software
  16. *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17. *
  18. */
  19. // 系统通用的数据结构以及部分常量的定义
  20. #ifndef __STRUCT_DEFINE_H__
  21. #define __STRUCT_DEFINE_H__
  22. enum {
  23.     SP4CS_PORT = 20, // SP接受CS连接的TCP端口
  24. };
  25. enum {
  26.     MD5_LEN = 32,          // MD5值的长度
  27. BLOCK_SIZE = 16384,    // 默认分块大小
  28. };
  29. // 普通网络的IP地址信息,精简版,大小8字节
  30. // 不能直接当做sockaddr使用,只能赋值给一个sockaddr
  31. class NormalAddress {
  32. public:
  33.     NormalAddress() {
  34.         memset(this, 0, sizeof(NormalAddress));
  35.         sin_family = AF_INET;
  36.     };
  37.     bool operator == (const NormalAddress& addr) const {
  38.         return ((addr.sin_addr.s_addr == sin_addr.s_addr) && 
  39.             (addr.sin_port == sin_port));
  40.     };
  41.     short sin_family;
  42.     u_short sin_port;
  43.     struct in_addr sin_addr;
  44. };
  45. // 数据传输的相关信息,目前大小32字节
  46. class TransferInfo {
  47. public:
  48.     TransferInfo() { memset(this, 0, sizeof(TransferInfo)); };
  49.     LONGLONG totalDownBytes;  // 总共下载字节
  50.     LONGLONG totalUpBytes;    // 总共上传字节
  51.     float    currDownSpeed;   // 当前下载速度
  52.     float    currUpSpeed;     // 当前上传速度
  53.     float    avgDownSpeed;    // 平均下载速度
  54.     float    avgUpSpeed;      // 平均上传速度
  55. };
  56. // DirectShow初始化需要的媒体类型数据,大小56字节
  57. struct TVMEDIATYPESECTION {
  58. GUID     majortype;
  59. GUID     subtype;
  60. GUID     formattype;
  61. ULONG    lSampleSize;
  62. unsigned bFixedSizeSamples:1;
  63. unsigned bTemporalCompression:1;
  64. unsigned bThisPinOnly:1;
  65. unsigned cbFormat:16;
  66. unsigned :13;
  67. };
  68. // Sample头的大小,共16字节
  69. struct SampleHeader {
  70. unsigned size:28; // 此Sample大小
  71. unsigned bDiscontinuity:1; // Sample属性
  72. unsigned bPreroll:1; // Sample属性
  73. unsigned bSyncPoint:1; // 是否关键帧
  74. unsigned bAudioSample:1; // 是否音频Sample
  75. UINT length; // 时间跨度
  76. LONGLONG start; // 起始时间
  77. };
  78. #endif