TyphoonMultiSocks.h 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645
  1. #ifndef __TYPHOON_SOCKS_H__
  2. #define __TYPHOON_SOCKS_H__
  3. #ifdef __cplusplus
  4. extern "C"
  5. {
  6. #endif
  7. #include "stdint.h"
  8. #ifdef _WIN32
  9. #ifdef TYPHOON_SOCKS_DLL_IMPLEMENT
  10. #define TYPHOON_SOCKS_EXTERN __declspec(dllexport)
  11. #else
  12. #ifdef _STATIC_LIB_
  13. #define TYPHOON_SOCKS_EXTERN
  14. #else
  15. #define TYPHOON_SOCKS_EXTERN __declspec(dllimport)
  16. #endif
  17. #endif
  18. #define TYPHOON_STDCALL __stdcall
  19. #else
  20. #define TYPHOON_SOCKS_EXTERN /* nothing */
  21. #define TYPHOON_STDCALL
  22. #endif
  23. typedef void * HTyphoonHandle;
  24. enum TyphoonMultiProxyServiceType
  25. {
  26. SOCKS5_SERVICE = 0,
  27. HTTP_SERVICE,
  28. };
  29. /*
  30. * 连接回调
  31. * status 为0:连接成功
  32. * status 非0:连接失败,失败后客户端会继续尝试重连
  33. */
  34. typedef void (TYPHOON_STDCALL *TyphoonMultiProxy_OnConnected)(HTyphoonHandle pyHandle, int status);
  35. /*
  36. * 连接断开回调
  37. */
  38. typedef void (TYPHOON_STDCALL *TyphoonMultiProxy_OnDisconnected)(HTyphoonHandle pyHandle);
  39. /*
  40. * 授权改变回调
  41. */
  42. typedef void (TYPHOON_STDCALL *TyphoonMultiProxy_OnAuthChange)(HTyphoonHandle pyHandle);
  43. /*
  44. * sdn连接路径改变回调
  45. */
  46. typedef void (TYPHOON_STDCALL *TyphoonMultiProxy_OnSDNRouteChange)(HTyphoonHandle pyHandle, int type);
  47. /*
  48. * 服务空闲回调回调
  49. */
  50. typedef void (TYPHOON_STDCALL *TyphoonMultiProxy_OnServiceIdleTimeout)(HTyphoonHandle pyHandle, enum TyphoonMultiProxyServiceType serviceType);
  51. /*
  52. * TyphoonProxy local与Server连接状态通知回调
  53. * 应用如果关心连接状态信息, 需注册对应回调函数;
  54. */
  55. typedef struct TyphoonMultiProxyConnectionStatusCb
  56. {
  57. TyphoonMultiProxy_OnConnected pfnOnConnected;
  58. TyphoonMultiProxy_OnDisconnected pfnOnDisConnected;
  59. TyphoonMultiProxy_OnAuthChange pfnOnAuthChange;
  60. TyphoonMultiProxy_OnSDNRouteChange pfnOnSDNRouteChange;
  61. TyphoonMultiProxy_OnServiceIdleTimeout pfnOnServiceIdleTimeout;
  62. }stTyphoonMultiProxyConnectionStatusCb;
  63. typedef struct ConnectExParam_s{
  64. char *socks5Ip;
  65. int socks5Port;
  66. char *serverIp;
  67. int serverPort;
  68. unsigned int mss;
  69. int bCompress;
  70. unsigned int timeOut;
  71. uint8_t transferMode;
  72. }ConnectExParam_t;
  73. /*
  74. * 设置Typhoon 回调
  75. */
  76. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_SetConnectionStatusCb(stTyphoonMultiProxyConnectionStatusCb Cb);
  77. /*
  78. * 获取Typhoon 回调
  79. */
  80. TYPHOON_SOCKS_EXTERN stTyphoonMultiProxyConnectionStatusCb TyphoonMultiProxy_GetConnectionStatusCb();
  81. /*
  82. * 初始化Typhoon
  83. * 参数:
  84. * maxSpeed:最大速度,单位KB,只能在权限范围内设置,设为0,使用最大权限速度
  85. * minSpeed:最小速度,单位KB,设为0,默认128KB
  86. * pLogPath:日志路径
  87. * pLicensePath:license文件产生路径
  88. * 返回值:
  89. * 0成功,非0失败
  90. */
  91. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_InitClient(unsigned int maxSpeed, unsigned int minSpeed, const char *pLogPath, const char *pLicensePath, void *rootsData, int rootsDataLen);
  92. /*
  93. * 初始化Typhoon
  94. * 参数:
  95. * maxSpeed:最大速度,单位KB,只能在权限范围内设置,设为0,使用最大权限速度
  96. * minSpeed:最小速度,单位KB,设为0,默认128KB
  97. * pLogPath:日志路径
  98. * pLicensePath:license文件产生路径
  99. * 返回值:
  100. * 0成功,非0失败
  101. */
  102. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_InitClientEx(unsigned int maxSpeed, unsigned int minSpeed, const char *pLogPath, const char *pLicensePath, uint8_t transferMode);
  103. /*
  104. * 新建一条连接
  105. * 参数:
  106. * socks5Ip:socket5 监听ip
  107. * socks5Port:socket5 监听端口,设置为0由系统随机分配端口
  108. * serverIp:Typhoon server ip
  109. * serverPort:Typhoon server 端口
  110. * mss:最大报文长度,范围 600-1442
  111. * 该值的实际大小由 server与client协商决定,谁小用谁
  112. *
  113. * bCompress:是否开启压缩,1开启,0关闭;
  114. * 是否开启压缩实际效果由 server与client协商决定,只有都打开压缩才会有效
  115. *
  116. * timeOut:连接超时时间,单位 ms,设置为0不使用超时
  117. * 返回值:
  118. * 返回连接的句柄,该句柄需要由调用者自行维护,其他与连接相关的api都需要此句柄
  119. */
  120. TYPHOON_SOCKS_EXTERN HTyphoonHandle TyphoonMultiProxy_CreateNewConnect(const char *socks5Ip, int socks5Port,
  121. const char *serverIp, int serverPort, unsigned int mss, int bCompress, unsigned int timeOut);
  122. TYPHOON_SOCKS_EXTERN HTyphoonHandle TyphoonMultiProxy_CreateNewConnectEx(ConnectExParam_t *connP);
  123. TYPHOON_SOCKS_EXTERN HTyphoonHandle TyphoonMultiProxy_CreateNewTyphoonConn(const char *serverIp, int serverPort,
  124. unsigned int mss, int bCompress, unsigned int timeOut, uint8_t transferMode);
  125. TYPHOON_SOCKS_EXTERN HTyphoonHandle TyphoonMultiProxy_CreateNewTyphoonConnVia(const char *serverIp, int serverPort,
  126. unsigned int mss, int bCompress, unsigned int timeOut, uint8_t transferMode, uint64_t via);
  127. /*
  128. * 关闭连接
  129. * 参数:
  130. * pyHandle:连接句柄
  131. * 返回值:
  132. * 0成功,非0失败
  133. */
  134. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CloseConnect(HTyphoonHandle pyHandle);
  135. /*
  136. * 重置连接
  137. * 参数:
  138. * pyHandle:连接句柄
  139. * 返回值:
  140. * 0成功,非0失败
  141. * 说明:
  142. * 该方法主要用来在mss或者压缩状态改变时候使用
  143. * 设置后所有的 socket5连接都会断开
  144. */
  145. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_RestartConnect(HTyphoonHandle pyHandle);
  146. /*
  147. * 使能压缩
  148. * 参数:
  149. * pyHandle:连接句柄
  150. * 说明:
  151. * 该方法设置后需要重置连接才会生效
  152. */
  153. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_EnableCompress(HTyphoonHandle pyHandle);
  154. /*
  155. * 关闭压缩
  156. * 参数:
  157. * pyHandle:连接句柄
  158. * 说明:
  159. * 该方法设置后需要重置连接才会生效
  160. */
  161. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_DisableCompress(HTyphoonHandle pyHandle);
  162. /*
  163. * 获取连接的压缩状态
  164. * 参数:
  165. * pyHandle:连接句柄
  166. * 返回值:
  167. * 1开启压缩,0未开启
  168. */
  169. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_IsCompressEnabled(HTyphoonHandle pyHandle);
  170. /*
  171. * 获取连接状态
  172. * 参数:
  173. * pyHandle:连接句柄
  174. * 返回值:
  175. * 1已连接,0未连接
  176. */
  177. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetConnectionStatus(HTyphoonHandle pyHandle);
  178. /*
  179. * 获取Socks5端口
  180. * 参数:
  181. * pyHandle:连接句柄
  182. * 返回值:
  183. * 小于等于0失败,大于0为监听的端口
  184. */
  185. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetSocks5Port(HTyphoonHandle pyHandle);
  186. /*
  187. * 获取Http端口
  188. * 参数:
  189. * pyHandle:连接句柄
  190. * 返回值:
  191. * 小于等于0失败,大于0为监听的端口
  192. */
  193. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetHttpPort(HTyphoonHandle pyHandle);
  194. /*
  195. * 设置连接接收速度
  196. * 参数:
  197. * pyHandle:连接句柄
  198. * RecvSpeed:接收速度,单位KB,设为0使用最大权限带宽
  199. * 返回值:
  200. * 0成功,非0失败
  201. */
  202. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetConnRecvSpeed(HTyphoonHandle pyHandle, unsigned int RecvSpeed);
  203. /*
  204. * 设置最大发送速度
  205. * 参数:
  206. * pyHandle:连接句柄
  207. * Speed:发送速度,单位KB,设为0使用最大权限带宽
  208. * 返回值:
  209. * 0成功,非0失败
  210. */
  211. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetMaxSendSpeed(HTyphoonHandle pyHandle, unsigned int Speed);
  212. /*
  213. * 设置最小发送速度
  214. * 参数:
  215. * pyHandle:连接句柄
  216. * Speed:发送速度,单位KB,设为0默认128KB
  217. * 返回值:
  218. * 0成功,非0失败
  219. */
  220. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetMinSendSpeed(HTyphoonHandle pyHandle, unsigned int Speed);
  221. /*
  222. * 设置连接的超时时间
  223. * 参数:
  224. * pyHandle:连接句柄
  225. * timeout:超时时间,单位 ms
  226. * 返回值:
  227. * 小于0失败,大于等于0为设置的超时时间
  228. */
  229. TYPHOON_SOCKS_EXTERN unsigned int TyphoonMultiProxy_SetTcpIdleTimout(HTyphoonHandle pyHandle, unsigned int timeout);
  230. /*
  231. * 设置服务的超时时间
  232. * 参数:
  233. * pyHandle:连接句柄
  234. * serviceType:服务类型
  235. * timeout:超时时间,单位 ms,必须大于等于 10*1000
  236. * 返回值:
  237. * 小于0失败,等于0成功
  238. */
  239. TYPHOON_SOCKS_EXTERN unsigned int TyphoonMultiProxy_SetServiceIdleTimout(HTyphoonHandle pyHandle, enum TyphoonMultiProxyServiceType serviceType, unsigned int timeout);
  240. /*
  241. * 获取连接的 rtt
  242. * 参数:
  243. * pyHandle:连接句柄
  244. * 返回值:
  245. * 小于0失败,大于等于0为rtt
  246. */
  247. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetConnectionRTT(HTyphoonHandle pyHandle);
  248. /*
  249. * 获取连接的丢包率
  250. * 参数:
  251. * pyHandle:连接句柄
  252. * 返回值:
  253. * 小于0失败,大于等于0为丢包率
  254. */
  255. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetConnectionDropRate(HTyphoonHandle pyHandle);
  256. /*
  257. * 获取Typhoon client版本
  258. * 参数:
  259. * verbuff:版本缓存,需要大于256字节
  260. * 返回值:
  261. * 0成功,非0失败
  262. */
  263. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetClientVersion(char *verbuff);
  264. /*
  265. * 获取最大权限带宽
  266. * 参数:
  267. * pyHandle:连接句柄
  268. * 返回值:
  269. * 小于0失败,大于0权限带宽,单位Mbps
  270. */
  271. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetMaxAuthSendSpeed(HTyphoonHandle pyHandle);
  272. /*
  273. * 设置 mss
  274. * 参数:
  275. * pyHandle:连接句柄
  276. * mss:范围600-1442
  277. * 返回值:
  278. * 0成功,非0失败
  279. * 说明:
  280. * 该方法设置后需要重置连接才会生效
  281. */
  282. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetMss(HTyphoonHandle pyHandle, unsigned int mss);
  283. /*
  284. * 获取 mss
  285. * 参数:
  286. * pyHandle:连接句柄
  287. * 返回值:
  288. * 小于等于0失败,大于0为mss
  289. */
  290. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetMss(HTyphoonHandle pyHandle);
  291. /*
  292. * 设置用户的私有数据,用来保存用户数据指针
  293. * 参数:
  294. * 无
  295. * 返回值:
  296. * 0成功,非0失败
  297. */
  298. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetUserData(uint64_t Data);
  299. /*
  300. * 获取用户的私有数据
  301. * 参数:
  302. * 无
  303. * 返回值:
  304. * 返回用户指针
  305. */
  306. TYPHOON_SOCKS_EXTERN uint64_t TyphoonMultiProxy_GetUserData();
  307. /*
  308. * 获取连接的出口ip地址
  309. * 参数:
  310. * pyHandle:连接句柄
  311. * addr:保存地址结构体指针
  312. * 返回值:
  313. * 无
  314. */
  315. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_GetWanAddr(HTyphoonHandle pyHandle, struct sockaddr *addr);
  316. /*
  317. * 获取对端ip地址
  318. * 参数:
  319. * pyHandle:连接句柄
  320. * addr:保存地址结构体指针
  321. * 返回值:
  322. * 无
  323. */
  324. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_GetRemoteAddr(HTyphoonHandle pyHandle, struct sockaddr *addr);
  325. /*
  326. * 获取对端 rtt
  327. * 参数:
  328. * pyHandle:连接句柄
  329. * 返回值:
  330. * 小于等于0失败,大于0为rtt
  331. */
  332. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetQueryPeerRTT(HTyphoonHandle pyHandle);
  333. /*
  334. * 获取对端丢包率
  335. * 参数:
  336. * pyHandle:连接句柄
  337. * 返回值:
  338. * 小于等于0失败,大于0为丢包率,单位万分之一
  339. */
  340. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetQueryPeerDropRate(HTyphoonHandle pyHandle);
  341. /*
  342. * 获取最大发送速度
  343. * 参数:
  344. * pyHandle:连接句柄
  345. * 返回值:
  346. * 小于等于0失败,大于0为最大发送速度,单位B
  347. */
  348. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetMaxSendSpeed(HTyphoonHandle pyHandle);
  349. /*
  350. * 获取最小发送速度
  351. * 参数:
  352. * pyHandle:连接句柄
  353. * 返回值:
  354. * 小于等于0失败,大于0为最小发送速度,单位B
  355. */
  356. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetMinSendSpeed(HTyphoonHandle pyHandle);
  357. /*
  358. * 获取对端 mss
  359. * 参数:
  360. * pyHandle:连接句柄
  361. * 返回值:
  362. * 小于等于0失败,大于0为 mss
  363. */
  364. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetQueryMss(HTyphoonHandle pyHandle);
  365. /*
  366. * 获取当前发送的实时速度
  367. * 参数:
  368. * pyHandle:连接句柄
  369. * 返回值:
  370. * 小于等于0失败,大于0为实时发送速度
  371. */
  372. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_GetCurSendSpeed(HTyphoonHandle pyHandle);
  373. /*
  374. * 设置HSM模式
  375. * 参数:
  376. * mode:1开始HSM,0关闭HSM
  377. * 返回值:
  378. * 0成功,非0失败
  379. * 说明:
  380. * 该方法需要在TyphoonMultiProxy_InitClient之后,CreateNewConnect之前设置
  381. */
  382. TYPHOON_SOCKS_EXTERN unsigned int TyphoonMultiProxy_SetHighSpeedMode(unsigned int mode);
  383. /*
  384. * 设置连接的私有数据,用来保存用户数据指针
  385. * 参数:
  386. * pyHandle:连接句柄
  387. * Data:数据指针
  388. * 返回值:
  389. * 0成功,非0失败
  390. */
  391. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetConnectUserData(HTyphoonHandle pyHandle, uint64_t Data);
  392. /*
  393. * 获取连接的私有数据
  394. * 参数:
  395. * pyHandle:连接句柄
  396. * 返回值:
  397. * 返回用户指针
  398. */
  399. TYPHOON_SOCKS_EXTERN uint64_t TyphoonMultiProxy_GetConnectUserData(HTyphoonHandle pyHandle);
  400. /*
  401. * 设置socks5 代理的配置
  402. * 参数:
  403. * server:socks5域名或ip
  404. * port:端口
  405. * username:用户名
  406. * password:密码
  407. * 返回值:
  408. * 0成功,非0失败
  409. */
  410. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetSocks5ProxyConfig(char *server, uint16_t port, char *username, char *password);
  411. /*
  412. * 使能GSO
  413. * 参数:无
  414. * 返回值:
  415. * 0成功,非0失败
  416. */
  417. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_EnableGSO();
  418. /*
  419. * 关闭GSO
  420. * 参数:无
  421. * 返回值:
  422. * 0成功,非0失败
  423. */
  424. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_DisableGSO();
  425. /*
  426. * 创建 http 服务
  427. * 参数:
  428. * pyHandle:连接句柄
  429. * httpIp:ip地址
  430. * httpPort: 端口
  431. * timeOut:超时时间
  432. * 返回值:
  433. * 0成功,非0失败
  434. */
  435. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CreateHttpService(HTyphoonHandle pyHandle, const char *httpIp, int httpPort, uint32_t timeOut, uint16_t ifUseFirewall, uint16_t fecPercent);
  436. /*
  437. * 创建端口前转服务
  438. * 参数:
  439. * pyHandle:连接句柄
  440. * localIp:本地地址
  441. * localPort: 本地端口
  442. * remoteIp:远端地址
  443. * remotePort: 远端端口
  444. * timeOut:超时时间
  445. * 返回值:
  446. * 0成功,非0失败
  447. */
  448. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CreateLocalPortForwardService(HTyphoonHandle pyHandle, const char *localIp, int localPort, const char *remoteIp, int remotePort, uint32_t timeOut);
  449. /*
  450. * 设置传输模式
  451. * 参数:
  452. * pyHandle:连接句柄
  453. * TransferMode:设置连接的传输模式,0代表文件传输模式, 1代表实时传输模式
  454. * 返回值:
  455. * 设置的模式数值
  456. * 说明:
  457. * 该方法设置后需要重置连接才会生效
  458. */
  459. TYPHOON_SOCKS_EXTERN uint8_t TyphoonMultiProxy_SetTransferMode(HTyphoonHandle pyHandle, uint8_t TransferMode);
  460. /*
  461. * 创建远端socks5 代理
  462. * 参数:
  463. * pyHandle:连接句柄
  464. * pServerIp:远端监听的ip地址
  465. * serverPort:远端监听的端口
  466. * 返回值:
  467. * 小于等于0失败
  468. * 大于0成功
  469. */
  470. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CreateRemoteSocketService(HTyphoonHandle pyHandle, const char *pServerIp, uint16_t serverPort);
  471. /*
  472. * 创建远端http 代理
  473. * 参数:
  474. * pyHandle:连接句柄
  475. * pServerIp:远端监听的ip地址
  476. * serverPort:远端监听的端口
  477. * 返回值:
  478. * 小于等于0失败
  479. * 大于0成功
  480. */
  481. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CreateRemoteHttpService(HTyphoonHandle pyHandle, const char *pServerIp, uint16_t serverPort);
  482. /*
  483. * 创建远端端口前转
  484. * 参数:
  485. * pyHandle:连接句柄
  486. * pLocalIp:本地连接的ip地址
  487. * localPort:本地连接的端口
  488. * pServerIp:远端监听的ip地址
  489. * serverPort:远端监听的端口
  490. * 返回值:
  491. * 小于等于0失败
  492. * 大于0成功
  493. */
  494. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CreateRemotePortForwardService(HTyphoonHandle pyHandle,
  495. const char *pLocalIp, uint16_t localPort, const char *pServerIp, uint16_t serverPort);
  496. /*
  497. * 获取SDN ID
  498. * 参数:
  499. * 无
  500. * 返回值:
  501. * nodeId
  502. */
  503. TYPHOON_SOCKS_EXTERN uint64_t TyphoonMultiProxy_GetSdnNodeId();
  504. /*
  505. * sdnId 转换为 ip 和 端口
  506. * 参数:
  507. * ztsid:sdnId
  508. * ipv4:转换的ip地址
  509. * port:端口
  510. * 返回值:
  511. * 无
  512. */
  513. TYPHOON_SOCKS_EXTERN void TyphoonMultiProxy_SDNId2IpPort(char * ztsid, char *ipv4, short *port);
  514. /*
  515. * 设置 http 服务的 fec 百分比
  516. * 参数:
  517. * pyHandle:连接句柄
  518. * fecPercent:fec百分比,单位万分之一
  519. * 返回值:
  520. * 不等于0失败
  521. * 等于0成功
  522. */
  523. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_SetHttpServiceFecPercent(HTyphoonHandle pyHandle, uint16_t fecPercent);
  524. /*
  525. * 设置http服务允许的地址
  526. * 参数:
  527. * pyHandle:连接句柄
  528. * ip:允许的ip地址
  529. * port:允许的端口
  530. * 返回值:
  531. * 非0失败
  532. * 等于0成功
  533. */
  534. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_AddHttpFirewallAllowAddress(HTyphoonHandle pyHandle, char* ip, int port);
  535. /*
  536. * 删除http服务允许的地址
  537. * 参数:
  538. * pyHandle:连接句柄
  539. * ip:允许的ip地址
  540. * port:允许的端口
  541. * 返回值:
  542. * 非0失败
  543. * 等于0成功
  544. */
  545. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_DelHttpFirewallAllowAddress(HTyphoonHandle pyHandle, char* ip, int port);
  546. /*
  547. * 设置多线程发送
  548. * 参数:
  549. * enable:1使能,0关闭
  550. * 返回值:
  551. * 0成功,非0失败
  552. */
  553. TYPHOON_SOCKS_EXTERN unsigned int TyphoonMultiProxy_SetMultiSender(unsigned int enable);
  554. /*
  555. * 退出Typhoon
  556. * 参数:
  557. * 无
  558. * 返回值:
  559. * 0成功,非0失败
  560. */
  561. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_ExitClient();
  562. /*
  563. * 关闭 Http 服务
  564. * 参数:
  565. * pyHandle:连接句柄
  566. * 返回值:
  567. * 0成功,非0失败
  568. */
  569. TYPHOON_SOCKS_EXTERN int TyphoonMultiProxy_CloseHttpService(HTyphoonHandle pyHandle);
  570. #ifdef __cplusplus
  571. }
  572. #endif
  573. #endif