Example #1
0
static inline 
void delete_server(tcp_server_t *server)
{
    if (server->is_started)
    {
        tcp_server_stop(server);
    }
    free(server);

    return;
}
Example #2
0
int main(void)
{
    
    tcp_server_data_t * server;
    tcp_client_data_t * client;
    int i;
    char message[MAX_BUFFER_LEN];
    
    i= 0;
    
    server = tcp_server_data_new();
    strcpy(server->port,"8675");
    
    client = tcp_client_data_new();
    strcpy(client->dest_ip_address,"localhost");
    strcpy(client->port,"8675");
    
    tcp_server_start(server);
    tcp_client_start(client);

    printf("testing server and client with 5 messages\n");
    while(i<5)
    {
        sleep(1);
        sprintf(message, "ack from client %d\n",i);
        thread_copy_to_buffer(client->send_buffer, message);
        
        sprintf(message, "boo form server %d\n",i);
        thread_copy_to_buffer(server->send_buffer, message);
        i++;
    }
    
    printf("shutting down! this isnt pretty yet, but its ok :) \n");
    tcp_client_stop(client);
    tcp_client_data_free(client);
    
    tcp_server_stop(server);
    tcp_server_data_free(server);
    
    printf("goodbye!\n");
    return 0;
    
}
Example #3
0
File: main.c Project: gc87/ctools
int 
main(int argc, char** argv) {
	char path[50] = { 0x00 };
	if (2 <= argc) {
		strncpy(path, argv[1], strlen(argv[1]));
	} else {
		strncpy(path, "server.cfg", 10);
	}

	//读取配置文件
	TinyConf* config; 
	char* run;
	for(;;) {
		config = conf_open(path, '=');
		if(NULL == config) {
			sleep(5);
			continue;
		}

		run = conf_get(config, "run");
		if(0 >= strlen(run)) { 
			sleep(5);
			continue;
		} 

		if(0 != strcmp(run, "on")) {
			sleep(5);
			continue;
		}

		break; //一切ok,启动正常处理
	}

	//初始化mysql配置
	char* mysql_host = conf_get(config, "mysql_host");
	char* mysql_port_str = conf_get(config, "mysql_port");
	char* mysql_user = conf_get(config, "mysql_user");
	char* mysql_password = conf_get(config, "mysql_password");
	char* mysql_database = conf_get(config, "mysql_database");

	//将数据库设置存入到map中
	TinyMap* store_map = map_create();
	map_add(store_map, "host", mysql_host, NULL);
	map_add(store_map, "port", mysql_port_str, NULL);
	map_add(store_map, "user", mysql_user, NULL);
	map_add(store_map, "password", mysql_password, NULL);
	map_add(store_map, "database", mysql_database, NULL);

	//初始化tcpserver的相关代码
	int tcp_port = 7000;
	char* tcp_port_str = conf_get(config, "port");
	if(0 < strlen(tcp_port_str)) {
		tcp_port = atoi(tcp_port_str);
	}

	TCPServer* tcp_server = tcp_server_create(tcp_port); //生成tcp服务器实例
	if(NULL == tcp_server) {
		fprintf(stderr, "Create server falied.\n");
	}

	tcp_server_set_proc_callback(tcp_server, store_map, analyze_proc); //注册数据处理的回调函数
	tcp_server_set_timeout_callback(tcp_server, store_map, analyze_timeout); //注册客户端连接超时的回调函数

	int ret = tcp_server_start(tcp_server); //启动tcp服务器
	if(-1 == ret) {
 		fprintf(stderr, "Start tcpserver falied.\n");
 		return 0;
	}


	//创建存储实例
	Store* store = store_create(mysql_host, atoi(mysql_port_str), mysql_user, mysql_password, mysql_database);

	//创建网络检测线程
	pthread_t thread_id;
	int p_ret = pthread_create(&thread_id, NULL, (void*)check_networks, store);
	if(0 != p_ret) {
		fprintf(stderr, "%s\n", "create networks check thread err.");
	}

	for(;;) { //阻塞
		sleep(1000);
	}

	pthread_cancel(thread_id); //退出线程
	store_destroy(store); //销毁存储实例
	tcp_server_stop(tcp_server); //停止tcp服务器实例
	tcp_server_destroy(tcp_server); //销毁tcp服务器实例
	map_destroy(store_map); //销毁store_map实例
	conf_close(config); //关闭配置信息读取实例
	return 0;
}
Example #4
0
void
rpc_finish(struct rpc *rpc) {
	if (rpc->tcpserver) {
		tcp_server_stop(rpc->tcpserver);
	}
}