环境介绍:
操作系统: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