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

📄 init.h

📁 NAT打洞
💻 H
字号:
#ifndef initH
#define initH
#include "common.h"
#include "hashmap.h"
#include "arraylist.h"
#include "input_params.h"
#include "usage.h"
#include "server_loop.h"
#include "protocol.h"
#define LISTEN_PORT 8888
#define REGISTRATION_PERIOD 600

#define CLIENT_CONNECTED 0
#define CLIENT_REQUEST 1
#define CLIENT_LAST_STEP 0xFF

#define CLIENT_TYPE_UNKNOWN 0
#define CLIENT_TYPE_CLIENT 1
#define CLIENT_TYPE_PROXY 2

typedef struct client_data {
	SOCKET sock;
  struct sockaddr_in addr;
  int step;
  int client_type;
  MASTER_FD *master;
  int *fdmax;
  int legal;
  union ct {
  	struct proxy {
      int q;
    } proxy;
  	struct client {
      int tested;
      int need_proxy;
		  struct sockaddr_in proxy_addr;
		  struct sockaddr_in test_addr;
		  struct sockaddr_in *bad_proxies;
      int bp_cnt;
      SOCKET test_sock;
    } client;
  } type;
} CLIENT_DATA;

typedef struct proxy_data {
  struct sockaddr_in addr;
  int nclients;
  long last_registered;
} PROXY_DATA;

extern unsigned short listen_port;
extern char *program_name;
extern int always_proxy;
extern int verbose;
extern int registration_period;
extern HASHMAP *sock_data;
extern ARRAYLIST *proxy_data;
extern char buf[];    			// buffer for client data

extern int init(int argc, char* argv[]);
extern void *get_client_data(SOCKET sock, struct sockaddr_in addr);
extern struct sockaddr_in get_addr(void* client_data);
extern char *hello(void);

#endif

⌨️ 快捷键说明

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