Распределенная служба кодирования — страница 4

  • Просмотров 262
  • Скачиваний 5
  • Размер файла 38
    Кб

http://leithal.cool-tools.co.uk/sourcedoc/mysql509/html/mysql_8h.html Пример использования библиотек libcurl (скачивание) http://curl.haxx.se/lxr/source/docs/examples/ftpget.c Пример использования библиотек libcurl (загрузка) http://curl.haxx.se/lxr/source/docs/examples/ftpupload.c Руководство по написанию bash скриптов http://www.opennet.ru/docs/RUS/bash_scripting_guide/ Приложения Сервер-приложение server.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <strings.h> #include <sys/socket.h> #include <sys/types.h> #include <unistd.h> #include <arpa/inet.h> #include <netinet/in.h>

#include <time.h> #include <errno.h> #include <mysql.h> #include <my_global.h> #define MAXLINE 300 #define FILELINE 200 #define OPT_SIZE 1000 int main() { /** take config data **/ int SERV_PORT, mysql_port; char mysql_host[FILELINE] = {}, mysql_user[FILELINE] = {}, mysql_pass[FILELINE] = {}, mysql_db[FILELINE] = {}; FILE *config; char buf[FILELINE]; int buf_len = 0, non_infiniti = 0; if ( ( config = fopen("server.conf", "r") ) == NULL) { printf("\"server.conf\" fopen error\n"); return 1; } do { non_infiniti++; // подстраховка, чтобы цикл не ушел в вечную петлю fgets(buf, FILELINE, config); // берем из конфига порт if( strcmp(buf, "***port\n") == 0 ) {

fgets(buf, FILELINE, config); SERV_PORT = atoi(buf); continue; } if( strcmp(buf, "***mysql_host\n") == 0 ) { fgets(buf, FILELINE, config); buf_len = strlen(buf); strncpy( &mysql_host[0], buf, buf_len - 1); continue; } if( strcmp(buf, "***mysql_user\n") == 0 ) { fgets(buf, FILELINE, config); buf_len = strlen(buf); strncpy( &mysql_user[0], buf, buf_len - 1); continue; } if( strcmp(buf, "***mysql_pass\n") == 0 ) { fgets(buf, FILELINE, config); buf_len = strlen(buf); strncpy( &mysql_pass[0], buf, buf_len - 1); continue; } if( strcmp(buf, "***mysql_database\n") == 0 ) { fgets(buf, FILELINE, config); buf_len = strlen(buf); strncpy( &mysql_db[0], buf, buf_len - 1); continue; } if( strcmp(buf, "***mysql_port\n") == 0 ) {

fgets(buf, FILELINE, config); mysql_port = atoi(buf); continue; } if ( strcmp(buf, "***end\n") == 0) break; strcpy(buf, ""); } while (non_infiniti < 1000); printf("%s\n", mysql_host); printf("%s\n", mysql_user); printf("%s\n", mysql_pass); printf("%s\n", mysql_db); printf("%d\n", mysql_port); /** MySQL init **/ // Дескриптор соединения MYSQL *rskdb; // Дескриптор результирующей таблицы MYSQL_RES *table; // Дескриптор строки MYSQL_ROW row; rskdb = mysql_init(NULL); if(rskdb == NULL) { // Если дескриптор не получен - выводим сообщение об ошибке fprintf(stderr, "Error: can't create

MySQL-descriptor\n"); exit(1); } // Подключаемся к серверу // потом добавим подцепление из конфига if(!mysql_real_connect(rskdb, mysql_host, mysql_user, mysql_pass, mysql_db, mysql_port, //3306, NULL, 0 )) { // Если нет возможности установить соединение с сервером // базы данных выводим сообщение об ошибке fprintf(stderr, "Error: can't connect to database %s\n", mysql_error(rskdb)); return 1; } else { // Если соединение успешно установлено выводим фразу - "Success!" fprintf(stdout, "Success!\n"); } // Устанавливаем кодировку соединения,

чтобы предотвратить // искажения русского текста if(mysql_query((MYSQL *)rskdb, "SET NAMES 'utf8'") != 0) printf("Error: can't set character set\n"); /** creating listen socket **/ int fdserver, fdclient; socklen_t client_len; pid_t childpid; struct sockaddr_in cliaddr, servaddr; // сокет сервера if ( (fdserver = socket(AF_INET, SOCK_STREAM, 0)) < 0) { printf("cant make server socket\n"); return 1; } bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); //servaddr.sin_addr.s_addr = inet_pton(AF_INET, RSK_SERV_ADDR, &servaddr.sin_addr); servaddr.sin_port = htons(SERV_PORT); char myaddr[INET_ADDRSTRLEN]; inet_ntop(AF_INET,