测试windows 下 Socket+Mysql调用。

环境:

OS:Win7; DBMS:Mysql;  IDE:codeblockS.

server:

 #include <WINSOCK2.H>
#include <stdio.h>
#include <mysql.h>
/*数据库连接用宏*/
#define HOST "localhost"//本地
#define USERNAME "root"//dbms user name
#define PASSWORD "123456"//password
#define DATABASE "test"//database name
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"C:\\Program Files\\MySQL\\MySQL Server 5.5\\lib\\libmysql.lib")
void query_sql(char* sql);//数据库查询
int main(int argc,char **argv)
{
WORD myVersionRequest;
WSADATA wsaData;
int err;
SOCKET serSocket;
SOCKADDR_IN addr;
int len;
SOCKADDR_IN clientsocket;
SOCKET serConn;
char sendBuf[];
char receiveBuf[];//接收
char *query;
query="select * from serverinfo";//查询学生表 myVersionRequest=MAKEWORD(,);
err=WSAStartup(myVersionRequest,&wsaData);
if (!err)
{
printf("已打开套接字,等待连接!\n");
}
else
{
printf("ERROR:嵌套字未打开!");
return ;
}
//进一步绑定套接字
serSocket=socket(AF_INET,SOCK_STREAM,);//创建了可识别套接字 //需要绑定的参数
addr.sin_family=AF_INET;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);//ip地址
addr.sin_port=htons();//绑定端口 bind(serSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR));//绑定完成
listen(serSocket,);//其中第二个参数代表能够接收的最多的连接数 //////////////////////////////////////////////////////////////////////////
//开始进行监听
////////////////////////////////////////////////////////////////////////// len=sizeof(SOCKADDR);
while ()
{
query_sql(query);//仅用于测试,没有写客户端,所以在阻塞之前对数据库进行调用
serConn=accept(serSocket,(SOCKADDR*)&clientsocket,&len);//如果这里不是accept而是conection的话。。就会不断的监听 sprintf(sendBuf,"hello, %s !",inet_ntoa(clientsocket.sin_addr));//找对对应的IP并且将这行字打印到那里
printf("Send:%s\n",sendBuf);
send(serConn,sendBuf,strlen(sendBuf)+,); recv(serConn,receiveBuf,sizeof(receiveBuf),);
printf("recv:%s\n",receiveBuf); closesocket(serConn);//关闭
WSACleanup();//释放资源的操作
return ;
}
return ;
}
void query_sql(char* sql)
{
MYSQL my_connection; /*这是一个数据库连接*/
int res; /*执行sql語句后的返回标志*/
MYSQL_RES *res_ptr; /*指向查询结果的指针*/
MYSQL_FIELD *field; /*字段结构指针*/
MYSQL_ROW result_row; /*按行返回的查询信息*/
int row, column; /*查询返回的行数和列数*/
int i, j;
/*初始化mysql连接my_connection*/
mysql_init(&my_connection);
/*建立mysql连接*/
if (NULL != mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD,
DATABASE, , NULL, CLIENT_FOUND_ROWS)) /*连接成功*/
{
printf("数据库查询query_sql连接成功!\n");
/*设置查询编码为gbk,以支持中文*/
mysql_query(&my_connection, "set names gbk");
res = mysql_query(&my_connection, sql);
if (res) /*执行失败*/
{
printf("Error: mysql_query !\n");
/*关闭连接*/
mysql_close(&my_connection);
}
else /*现在就代表执行成功了*/
{
/*将查询的結果给res_ptr*/
res_ptr = mysql_store_result(&my_connection);
/*如果结果不为空,就把结果print*/
if (res_ptr)
{
/*取得結果的行数和*/
column = mysql_num_fields(res_ptr);
row = mysql_num_rows(res_ptr);
printf("查询到 %d 行 \n", row);
/*输出結果的字段名*/
for (i = ; field = mysql_fetch_field(res_ptr); i++)
printf("%10s ", field->name);
printf("\n");
/*按行输出結果*/
for (i = ; i < row+; i++)
{
result_row = mysql_fetch_row(res_ptr);
for (j = ; j < column; j++)
printf("%10s ", result_row[j]);
printf("\n");
}
}
/*不要忘了关闭连接*/
mysql_close(&my_connection);
}
}
else
{
printf("数据库连接失败");
}
}

最新文章

  1. 对DIP IoC DI的理解与运用
  2. django orm总结[转载]
  3. Jquery插件开发学习
  4. C++混合编程之idlcpp教程Lua篇(6)
  5. POJ3420Quad Tiling(矩阵快速幂)
  6. Lucene 4.X 倒排索引原理与实现: (3) Term Dictionary和Index文件 (FST详细解析)
  7. Fluent NHibernate other example
  8. delphi7在win7系统如何安装spcomm控件
  9. Oracle 传参错误
  10. 谈论HashMap,HashSet,HashTableeasy被我们忽视
  11. 移动收入超PC端 盛大文学战略转型初见成效
  12. 关于MATLAB收集人工鼠标移动轨迹的坐标
  13. python3下Django2.0配置最新xadmin详解
  14. UNIX环境高级编程——进程关系
  15. dubbo注册到zookeeper
  16. JMeter&#160;逻辑控制之While循环控制器(While&#160;Controller)
  17. BZOJ2002[Hnoi2010]弹飞绵羊——LCT
  18. Google&#39;s Machine Learning Crash Course #04# First Steps with TensorFlow
  19. VMware设置cpu虚拟化,intel VT-x
  20. 【读书笔记】iOS-网络-三种错误

热门文章

  1. LINUX中简单的字符命令
  2. iOS开发遇到的错误 -- Label显示多行文字导致宽度和高度的问题
  3. 一、项目基础架构(附GitHub地址)——以ABP为基础架构的一个中等规模的OA开发日志
  4. mysql-利润set变量模拟分组查询每组中的第N条数据
  5. CAlayer层的属性
  6. MySQL必知必会的查询
  7. 69.Android之天气预报app
  8. 【bzoj1034】 ZJOI2008—泡泡堂BNB
  9. eclipse各版本代号
  10. 什么是RFC