部分代码源于网络,欢迎注明出处
打开vc++6.0,工具->选项->目录(选项卡),在其Include files添加MySQL的include路径。如我的MySQL的include文件夹的路径为:C:\Program Files\MySQL\MySQL Server 5.0\include。切换下拉框,选择Library files,添加MySQL的lib路径。如我的为:C:\Program Files\MySQL\MySQL Server 5.0\lib\opt
//connect.cpp 向mysql数据库中的已建立具体表格中插入数据
#include <windows.h>
#include <stdlib.h>#include <string.h>
#include <mysql.h>
#include <iostream>
//#include <iomanip>
#pragma comment(lib,"libmysql.lib")//连接MysQL需要的库
using namespace std;
int connect()
{
const char user[] = "root"; //username
const char pswd[] = "fang"; //password
const char host[] = "localhost"; //or"127.0.0.1"
const char table[] ="test"; //database
unsigned int port = 3306; //server port
MYSQL myCont; //存放mysql输入语句
MYSQL_RES *result;
MYSQL_ROW sql_row;
MYSQL_FIELD *fd;
char column[32][32];
int res;
//const char* str="select * from tb1";
//const char* str="Select version();";
char name[16]="-_-";
char age[16]="23";
char salary[16]="48";
mysql_init(&myCont);
if(mysql_real_connect(&myCont,host,user,pswd,table,port,NULL,0))
{
cout<<"connect succeed!"<<endl;
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
//scanf("%s%s%s",name,age,salary);
char bg[100]="INSERT INTO tb1 VALUES(";
char comma[2]=",";
char semi[2]="'";
char b[3]=");";
strcat(bg,semi);
strcat(bg,name);
strcat(bg,semi);
strcat(bg,comma);
strcat(bg,age);
strcat(bg,comma);
strcat(bg,salary);
strcat(bg,b);
printf("%s\n",bg);
mysql_query(&myCont,bg);//插入
res=mysql_query(&myCont,"select * from tb1");//查询
if(!res)
{
result=mysql_store_result(&myCont);//保存查询到的数据到result
if(result)
{
int i,j;
cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl; //统计表格行数
for(i=0;fd=mysql_fetch_field(result);i++) //获取列名
{
strcpy(column[i],fd->name);
}
j=mysql_num_fields(result); //统计表格列数
for(i=0;i<j;i++)
{
// cout<<setw(12)<<column[i];
printf("%s\t",column[i]);
}
printf("\n");
while(sql_row=mysql_fetch_row(result))//获取数据表每行具体的数据
{
for(i=0;i<j;i++)
{
// cout<<setw(12)<<sql_row[i];
printf("%s\t",sql_row[i]); //数据库行具体数据
}
//cout<<endl;
printf("\n");
}
}
}
else
{
cout<<"query sql failed!"<<endl;
}
}
else
{
cout<<"connect failed!"<<endl;
}
if(result!=NULL) mysql_free_result(result);//释放结果资源
mysql_close(&myCont);//断开连接
return 0;
}
//TCP Server.cpp用于监听client的动作
#include <stdio.h>
#include <winsock2.h>
//#include"TCP Client.cpp"
#include"connect.cpp"
#pragma comment(lib,"ws2_32.lib")
int main(int argc, char* argv[])
{
//初始化WSA
WORD sockVersion = MAKEWORD(2,2);
WSADATA wsaData;
if(WSAStartup(sockVersion, &wsaData)!=0)
{
return 0;
}
//创建套接字
SOCKET slisten = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(slisten == INVALID_SOCKET)
{
printf("socket error !");
return 0;
}
//绑定IP和端口
sockaddr_in sin;
sin.sin_family = AF_INET;
sin.sin_port = htons(8888);
sin.sin_addr.S_un.S_addr = INADDR_ANY;
if(bind(slisten, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
{
printf("bind error !");
}
//开始监听
if(listen(slisten, 5) == SOCKET_ERROR)
{
printf("listen error !");
return 0;
}
//循环接收数据
SOCKET sClient;
sockaddr_in remoteAddr;
int nAddrlen = sizeof(remoteAddr);
char revData[255];
while (true)
{
printf("等待连接...\n");
sClient = accept(slisten, (SOCKADDR *)&remoteAddr, &nAddrlen);
if(sClient == INVALID_SOCKET)
{
printf("accept error !");
continue;
}
printf("接受到一个连接:%s \r\n", inet_ntoa(remoteAddr.sin_addr));
//接收数据
int ret = recv(sClient, revData, 255, 0);
if(ret > 0)
{
revData[ret] = 0x00;
printf(revData); //revDATA为接收到的数据,需要对其进行解析,从而写入数据库
}
connect();
//发送数据
char * sendData = "Data received!\n";
send(sClient, sendData, strlen(sendData), 0);
closesocket(sClient);
}
closesocket(slisten);
WSACleanup();
return 0;
}
//TCP client.cpp 用于模拟GPRS模块
#include <WINSOCK2.H>
#include <STDIO.H>
#pragma comment(lib,"ws2_32.lib")
int main(int argc, char* argv[])
{
WORD sockVersion = MAKEWORD(2,2);
WSADATA data;
if(WSAStartup(sockVersion, &data) != 0)
{
return 0;
}
SOCKET sclient = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if(sclient == INVALID_SOCKET)
{
printf("invalid socket !");
return 0;
}
sockaddr_in serAddr;
serAddr.sin_family = AF_INET;
serAddr.sin_port = htons(8888);
serAddr.sin_addr.S_un.S_addr = inet_addr("192.168.1.106"); //Server的ip地址
if (connect(sclient, (sockaddr *)&serAddr, sizeof(serAddr)) == SOCKET_ERROR)
{
printf("connect error !\n");
closesocket(sclient);
return 0;
};
//char * sendData="你好,TCP服务端,我是客户端!\n";
char temp[100];//client输入传输字符串
scanf("%s",temp);
char * sendData=temp;
send(sclient, sendData, strlen(sendData), 0); //向套接字发送数据
char recData[255];
int ret = recv(sclient, recData, 255, 0);
if(ret > 0)
{
recData[ret] = 0x00; //revDATA存放接收的数据
printf(recData);
}
closesocket(sclient);
WSACleanup();
return 0;
}