#include #include #include #include #include #include #include #include #include "/usr/include/mysql/mysql.h" #define PORT 7777 #define MAXPENDING 5 #define DB_HOST "localhost" #define DB_USER "root" #define DB_PASS "" #define DB_NAME "name_list" void with_mysql_error(MYSQL *conn) { fprintf(stderr, "%s\n", mysql_error(conn)); mysql_close(conn); exit(1); } struct list { char name[32]; int age; int sex; }; main(int argc, char *argv[]) { int servSockfd; int clntSockfd; struct sockaddr_in servAddr; struct sockaddr_in clntAddr; int clntLen; int recvLen; struct list n; MYSQL *conn = mysql_init(NULL); MYSQL_ROW row; MYSQL_RES *result; char query[1024]; int i= 0, j = 0; int query_stat; if((servSockfd=socket(AF_INET, SOCK_STREAM, 0)) == -1) { perror("sock failed"); exit(1); } if (mysql_real_connect(conn, DB_HOST, DB_USER, DB_PASS, DB_NAME, 0, NULL, 0) == NULL) { with_mysql_error(conn); }else printf("connection.....\n"); if (conn == NULL) { fprintf(stderr, "mysql_init() fail\n"); exit(1); } memset(&servAddr, 0, sizeof(servAddr)); servAddr.sin_family = AF_INET; servAddr.sin_addr.s_addr = htonl(INADDR_ANY); servAddr.sin_port = htons(PORT); if(bind(servSockfd, (struct sockaddr*)&servAddr, sizeof(servAddr)) == -1) { perror("bind failed"); exit(1); } if(listen(servSockfd, MAXPENDING) == -1) { perror("listen failed"); exit(1); } while(1) { clntLen = sizeof(clntAddr); if((clntSockfd=accept(servSockfd, (struct sockaddr*)&clntAddr, &clntLen)) == -1) { perror("accept failed"); exit(1); } //---------------------------------------- //---------------------------------------- while(1) { if((recv(clntSockfd, (char*)&n, sizeof(n), 0)) == -1) { perror("recv failed"); exit(1); } if(recvLen == 0) break; query_stat = mysql_query(conn, "select name, age, sex from name_list"); if(query_stat != 0) { printf("query error\n"); exit(0); } result = mysql_store_result(conn); int num_fields = mysql_num_fields(result); while(row = mysql_fetch_row(result)) { for(i = 0; i < num_fields; i++) { strcpy(n.name, row[0]); n.age = atoi(row[1]); n.sex = atoi(row[2]); } } //DB //--------------------------------- // mysql_free_result(result); // mysql_close(conn); //--------------------------------- if(send(clntSockfd, &n, sizeof(n), 0) == -1) { perror("send failed"); exit(1); } //DB //---------------------------------- mysql_free_result(result); mysql_close(conn); //----------------------------------- } close(clntSockfd); } }