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

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. #include <stdio.h>
  21. #include <stdlib.h>
  22. #include <stdarg.h>
  23. #include <ctype.h>
  24. #include <sys/types.h>
  25. #include <sys/time.h>
  26. #include <sys/stat.h>
  27. #include <sys/wait.h>
  28. #include <sys/resource.h>
  29. #include <sys/socket.h>
  30. #include <netinet/in.h>
  31. #include <arpa/inet.h>
  32. #include <netdb.h>
  33. #include <unistd.h>
  34. #include <fcntl.h>
  35. #include <errno.h>
  36. #include <assert.h>
  37. #include <syslog.h>
  38. #include <string.h>
  39. #include <time.h>
  40. #include <assert.h>
  41. #include "ProtocolDefine.h"
  42. #include "StructDefine.h"
  43. #define MAX_BIND 10
  44. #define AUTH_HEADER             12
  45. #define NORMAL_HEADER           5
  46. #define MAX_NET_NUM 5
  47. #define MAX_CLIENT 3072
  48. #define MAX_PEER 0x10 /* max peers returned by NEED_PEERS */
  49. #define IPADDR_LEN 16 /*****IP地址最大长度*****/
  50. #define MD5_LEN 32
  51. #define SERVICE_LEN 128
  52. #define TYPE_NP 0
  53. #define TYPE_CP 1
  54. #define MAX_CHANNEL 0x400 //1024
  55. #define MAX_NP 0x40000 //262144
  56. #define MAX_CP 0x10000 //65536
  57. #define MAX_RM 0x4 //4
  58. //#define TS4CP_PORT 22168
  59. //#define TS4RM_PORT 22169
  60. #define MAX_DATA 20000
  61. #define MAX_LINE 1024
  62. #define MAX_IDLE 120
  63. #define SILENCE_TIME 2
  64. #define MAX_INTERVAL 20
  65. #define OBSERVE_LAYER 10
  66. #define BASEDIR "/home/channel/"
  67. #define MAX_LOG_COUNT 100 // call fflush() when current_log_count reaches MAX_LOG_COUNT
  68. #include "StructDefine.h"
  69. struct MyInterval
  70. {
  71. unsigned int start;
  72. unsigned int len;
  73. };
  74. // Generic format of messages between TS and other peers
  75. // Most often used in login process
  76. struct MyMessage
  77. {
  78. unsigned int len;
  79. unsigned char type;
  80. char buffer[MAX_DATA];
  81. };
  82. // format of messages between TS and other peers
  83. //  with authcodes specified
  84. struct MyTSMessage
  85. {
  86. unsigned int len;
  87. unsigned char type;
  88. unsigned int authcode1:24;
  89. unsigned int authcode2;
  90. char buffer[MAX_DATA];
  91. } ;
  92. struct MyChannelInfo
  93. {
  94. char md5[MD5_LEN+1];
  95. unsigned char numinter;
  96. struct MyInterval inter[MAX_INTERVAL];
  97. };
  98. struct MyChannel
  99. {
  100. char name[MD5_LEN+1];
  101. unsigned int numclient;
  102. unsigned int accumclient;
  103. unsigned int latest_time;
  104. #ifndef SORT_NET
  105. struct MyEdge *PeerHead;
  106. #else
  107. unsigned int nclient_net[MAX_NET_NUM];
  108. struct MyEdge *PeerHead[MAX_NET_NUM];
  109. #endif
  110. struct MySession *SCPhead;
  111. struct MyChannel *next;
  112. };
  113. struct MyEdge
  114. {
  115. struct MyChannel *head;
  116. struct MySession *me;
  117. struct MyEdge *cnext;
  118. struct MyEdge *enext;
  119. unsigned char numinter;
  120. unsigned int current;
  121. struct MyInterval inter[MAX_INTERVAL];
  122. };
  123. struct MyNPInfo
  124. {
  125. struct CorePeerInfo p;
  126. struct TransferInfo t;
  127. struct StatInfo  s;
  128. int    startBlock; // starting position of NP
  129. int numchannel;
  130. struct MyEdge *cur;
  131. struct MyEdge *header;
  132. };
  133. struct MyCPInfo
  134. {
  135. char type;
  136. unsigned char numHeads;
  137. unsigned short connnum;
  138. unsigned char maxConn;
  139. char parameter[42];
  140. int userid;
  141. int resnum;
  142. float band;
  143. char servicetype[128];
  144. };
  145. struct MySession
  146. {
  147. int type;
  148. int socket;
  149. unsigned int host;
  150. unsigned int intra;
  151. unsigned short port;
  152. unsigned short npport;
  153. #ifdef SORT_NET
  154. unsigned int net;
  155. struct MySession *cachepeer[MAX_NET_NUM];
  156. #else
  157. struct MySession *cachepeer;
  158. #endif
  159. unsigned int auth;
  160. unsigned int time_sec;
  161. unsigned int last_access;
  162. union
  163. {
  164. struct MyNPInfo p;
  165. struct MyCPInfo cp;
  166. } u;
  167. struct MySession *hnext;
  168. };
  169. #define MAX_POLLUTE 1000