SQLite 電子詞典

2021-06-19 04:20:46 字數 4008 閱讀 6087

伺服器部分**段:

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define n 16 #define r 1 // user register #define l 2 // user login #define q 3 // query word #define h 4 // history record #define database "my.db" typedef struct msg; void do_register(int connectfd, msg *msg, sqlite3 *db); void do_login(int connectfd, msg *msg, sqlite3 *db); void do_query(int connectfd, msg *msg, sqlite3 *db); void do_history(int connectfd, msg *msg, sqlite3 *db); void do_client(int connectfd, sqlite3 *db); int do_searchword(int connectfd, msg *msg); void getdata(char data); int main(int argc, char *argv) /*開啟資料庫 my.db,如果沒有則建立,建立失敗則退出*/ if (sqlite3_open(database, &db) != sqlite_ok) /*建立乙個監聽套接字*/ if ((listenfd = socket(pf_inet, sock_stream, 0)) < 0) /*伺服器結構體內清零*/ bzero(&server_addr, sizeof(server_addr)); /*設定伺服器工作模式為ipv4並輸入伺服器位址和埠號*/ server_addr.sin_family = pf_inet; server_addr.sin_addr.s_addr = inet_addr(argv[1]); server_addr.sin_port = htons(atoi(argv[2])); /*將監聽套接字與伺服器結構體相關長度進行繫結*/ if (bind(listenfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) /*設定伺服器程序,並指定請求佇列長度為5*/ if (listen(listenfd, 5) < 0) /*避免殭屍程序的出現*/ signal(sigchld, sig_ign); /**/ while ( 1 ) /*建立子程序,失敗則退出*/ if ((pid = fork()) < 0) /*進入子程序*/ if (pid == 0) /*父程序關閉連線套接字*/ close(connectfd); } return 0; } void do_register(int connectfd, msg *msg, sqlite3 *db) ; char *errmsg; /*建立sql語句,向資料庫中插入乙個成員資訊(賬號和密碼)*/ sprintf(sqlstr, "insert into usr values('%s', '%s')", msg->name, msg->data); /*在db中執行上述建立好的語句,如果出錯則返回,如果成功結束則向客戶端返回ok*/ if(sqlite3_exec(db, sqlstr, null, null, &errmsg) != sqlite_ok) else /*向連線套接字中傳送剛才拷貝的「ok」*/ send(connectfd, msg, sizeof(msg), 0); return; } void do_login(int connectfd, msg *msg, sqlite3 *db) ; char *errmsg, **result; int nrow, ncolumn; //行列 /*拷貝sql語句*/ sprintf(sqlstr, "select * from usr where name = '%s' and pass = '%s'", msg->name, msg->data); /*執行語句,如果錯誤則列印錯誤資訊*/ if(sqlite3_get_table(db, sqlstr, &result, &nrow, &ncolumn, &errmsg) != sqlite_ok) /*如果判斷輸入之後 行數依然是0,則說明輸入失敗*/ if(nrow == 0) /*輸入成功*/ else /*傳送「ok」*/ send(connectfd, msg, sizeof(msg), 0); return; } int do_searchword(int connectfd, msg *msg) /*列印出被查詢的單詞*/ printf("query word is %s len = %d\n", msg->data, len); /*獲取長度為300的字串儲存至temp*/ while(fgets(temp, 300, fp) != null) /*關閉檔案*/ fclose(fp); return 0; } void do_history(int connectfd, msg *msg, sqlite3 *db) void getdata(char data) void do_query(int connectfd, msg *msg, sqlite3 *db) } else send(connectfd, msg, sizeof(msg), 0); return; } void do_client(int connectfd, sqlite3 *db) } printf("client quit\n"); exit(0); return; }

客戶端部分**段:

#include 

#include

#include

#include

#include

#include

#include

#include

#define n 16 #define r 1 // user register #define l 2 // user login #define q 3 // query word #define h 4 // history record #define database "my.db" /*通訊用結構體*/ typedef struct msg; void do_register(int socketfd, msg *msg); int do_login(int socketfd, msg *msg); void do_query(int socketfd, msg *msg); void do_history(int socketfd, msg *msg); int main(int argc, char *argv) /*建立套接字,並驗證是否正確,不正確退出*/ if ((socketfd = socket(pf_inet, sock_stream, 0)) < 0) /*結構體內部清零*/ bzero(&server_addr, sizeof(server_addr)); /*確定伺服器傳輸模式為ipv4,並確定ip位址和埠號*/ server_addr.sin_family = pf_inet; server_addr.sin_addr.s_addr = inet_addr(argv[1]); server_addr.sin_port = htons(atoi(argv[2])); /*建立乙個連線套接字,失敗則退出*/ if (connect(socketfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) int n;/*指令儲存*/ while(1) /*指令選擇*/ switch(n) } next: while(1) switch(n) } return 0; } void do_register(int socketfd, msg *msg) int do_login(int socketfd, msg *msg) printf("login : %s\n", msg->data); return 0; } void do_query(int socketfd, msg *msg) return; } void do_history(int socketfd, msg *msg)

另外需要使用到 dict.txt作為檔案源

mysql電子詞典 電子詞典

一 功能說明使用者可以登入和註冊 登入憑藉使用者名稱和密碼登入 註冊要求使用者必須填寫使用者名稱,密碼,其他內容自定 使用者名稱要求不能重複 要求使用者資訊能夠長期儲存可以通過基本的圖形介面print以提示客戶端輸入。程式分為服務端和客戶端兩部分 客戶端通過print列印簡單介面輸入命令發起請求 服...

簡易電子詞典

01 0203 0405 0607 0809 1011 1213 1415 1617 1819 2021 2223 2425 2627 2829 3031 3233 3435 3637 3839 4041 4243 4445 4647 4849 5051 5253 5455 5657 5859 60...

OC 電子詞典

mydictionary.h import define path users qianfeng desktop dict.txt define nslog a nslog a inte ce mydictionary nsobject nsstring readfile nsmutabledict...