ZeroC—ICE分布式数据同步Demo

该博客介绍了如何在Windows环境下,利用ZeroC ICE进行MySQL数据库的数据同步。博主使用了MySQL 5.6、VS2012和ICE 3.5.0版本,通过配置客户端与服务器的info.conf和serverInfo.conf文件,以及DBOperator.ice、Client.cpp和Server.cpp代码,展示了数据同步的过程。目前的Demo仅作为基础框架,实际功能需要进一步完善。
摘要由CSDN通过智能技术生成

环境介绍:

操作系统:Windows

数据库:MySQL 5.6

IDE:VS2012

ICE版本:3.5.0

MySQL Lib版本:5.6.12

 

配置文件:

客户端配置文件 info.conf

# IP和端口
ServerIP = 127.0.0.1
ServerPort = 10000

# DateBase信息
DataBase = demoice
Table = demo
HostName = 127.0.0.1
SqlName = root
SqlPwd = *****


服务器配置文件 serverInfo.conf

# DateBase信息
DataBase = demoICE
Table = syn
HostName = 127.0.0.1
SqlName = root
SqlPwd = ******


 

 

 

数据库脚本:

CREATE TABLE demo(
  name VARCHAR(20) PRIMARY KEY,
  pwd VARCHAR(20) NOT NULL
);

CREATE TABLE syn(
  name VARCHAR(20) PRIMARY KEY,
  pwd VARCHAR(20) NOT NULL
);

 

demo为源数据,syn为同步目标

 

Slice文件:

DBOperator.ice

// **********************************************************************
//
// Author: X_White
//
// **********************************************************************

#pragma once

module dbOperator {
	interface DBOprtr {
		int synDropTab();
		int synAllData();
		int synRowData();
		int synSingleData(string s);
		int transmitData(string s, string index);
	};
};


 

客户端:

Client.cpp

// **********************************************************************
//
// Copyright (c) 2003-2013 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************

#include <Ice/Ice.h>
#include <Printer.h>
#include <DBOperator.h>

#include <cstdio>
#include <iostream>
#include <cstring>
#include <time.h>
#include <WinSock2.h>
#include <mysql.h>
#include <vector>

#pragma comment(lib, "libmysql.lib")

using namespace std;
using namespace Demo;
using namespace dbOperator;

typedef struct synData {
	int count;
	char data[20][20];
}synData;

void ice_strcpy(char *src, char *des) {
	size_t i;
	size_t len1 = strlen(src);
	size_t len2 = strlen(des);
	for(i = 0; i < len2; i++) {
		src[i] = des[i];
	}
	src[i] = '\0';
}

int writeLog() {
	return 0;
}

/*
 * Author:X_White
 * initConf读取配置文件info.conf 并返回serverIP、端口号、数据库dbName、表名
 *
*/
int initConf(char *desIP, char *desPort, char *dbName, char *tableName, char *hostName, char *sqlName, char *sqlPwd) {
	FILE *conffp;
	errno_t err;
	char buf[1024];
	err = freopen_s(&conffp, "../conf/info.conf", "r", stdin);
	if(err != 0) {
		writeLog();
		exit(1);
	}
	while(gets_s(buf)) {
		if('#' == buf[0]) continue;
		char n1[128], n2[128], equ[128];
		memset(n1
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值