英英词典client
来源:互联网 发布:电脑超频软件 编辑:程序博客网 时间:2024/05/01 11:55
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sqlite3.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define N 16
#define R 1 // user register
#define L 2 // user login
#define Q 3 // query word
#define H 4 // history record
#define COL 50
#define DATABASE "my.db"
typedef struct
{
int type;
char name[N];
char data[256]; // password or word or remark
} MSG;
void do_register(int socketfd, MSG *msg)
{
msg->type = R;
printf("input name : ");
scanf("%s", msg->name);
printf("input password : ");
scanf("%s", msg->data);
send(socketfd, msg, sizeof(MSG), 0);
recv(socketfd, msg, sizeof(MSG), 0);
printf("register : %s\n", msg->data);
return;
}
int do_login(int socketfd, MSG *msg)
{
msg->type = L;
printf("input name : ");
scanf("%s", msg->name);
printf("input password : ");
scanf("%s", msg->data);
send(socketfd, msg, sizeof(MSG), 0);
recv(socketfd, msg, sizeof(MSG), 0);
if (strncmp(msg->data, "OK", 3) == 0)
{
printf("login : OK\n");
return 1;
}
printf("login : %s\n", msg->data);
return 0;
}
void do_query(int socketfd, MSG *msg)
{
msg->type = Q;
while ( 1 )
{
printf("plz input word");
scanf("%s", msg->data);
if (strcmp(msg->data, "#") == 0) break;
send(socketfd, msg, sizeof(MSG), 0);
recv(socketfd, msg, sizeof(MSG), 0);
printf(" ");
printf("%s\n", msg->data);
}
return;
}
void do_history(int socketfd, MSG *msg)
{
msg->type = H;
send(socketfd, msg, sizeof(MSG), 0);
while ( 1 )
{
recv(socketfd, msg, sizeof(MSG), 0);
if (msg->data[0] == '\0') break;
printf("%s\n", msg->data);
}
return;
}
int main(int argc, char *argv[])
{
int socketfd ;
struct sockaddr_in server_addr;
MSG msg;
if (argc < 3)
{
printf("Usage : %s <serv_ip> <serv_port>\n", argv[0]);
exit(-1);
}
if ((socketfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
{
perror("fail to socket");
exit(-1);
}
bzero(&server_addr, sizeof(server_addr));
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)
{
perror("fail to connect");
exit(-1);
}
int n;
while ( 1 )
{
printf("************************************\n");
printf("* 1: register 2: login 3: quit *\n");
printf("************************************\n");
printf("please choose : ");
if (scanf("%d", &n) <= 0)
{
perror("scanf");
exit(-1);
}
switch ( n )
{
case 1 :
do_register(socketfd, &msg);
break;
case 2 :
if (do_login(socketfd, &msg) == 1)
goto next;
break;
case 3 :
close(socketfd);
exit(0);
}
}
next:
while ( 1 )
{
printf("***********************************************\n");
printf("* 1: query_word 2: history_record 3: quit *\n");
printf("***********************************************\n");
printf("please choose : ");
if (scanf("%d", &n) < 0)
{
perror("scanf");
exit(-1);
}
switch ( n )
{
case 1 :
do_query(socketfd, &msg);
break;
case 2 :
do_history(socketfd, &msg);
break;
case 3 :
close(socketfd);
exit(0);
}
}
return 0;
}
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <sqlite3.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define N 16
#define R 1 // user register
#define L 2 // user login
#define Q 3 // query word
#define H 4 // history record
#define COL 50
#define DATABASE "my.db"
typedef struct
{
int type;
char name[N];
char data[256]; // password or word or remark
} MSG;
void do_register(int socketfd, MSG *msg)
{
msg->type = R;
printf("input name : ");
scanf("%s", msg->name);
printf("input password : ");
scanf("%s", msg->data);
send(socketfd, msg, sizeof(MSG), 0);
recv(socketfd, msg, sizeof(MSG), 0);
printf("register : %s\n", msg->data);
return;
}
int do_login(int socketfd, MSG *msg)
{
msg->type = L;
printf("input name : ");
scanf("%s", msg->name);
printf("input password : ");
scanf("%s", msg->data);
send(socketfd, msg, sizeof(MSG), 0);
recv(socketfd, msg, sizeof(MSG), 0);
if (strncmp(msg->data, "OK", 3) == 0)
{
printf("login : OK\n");
return 1;
}
printf("login : %s\n", msg->data);
return 0;
}
void do_query(int socketfd, MSG *msg)
{
msg->type = Q;
while ( 1 )
{
printf("plz input word");
scanf("%s", msg->data);
if (strcmp(msg->data, "#") == 0) break;
send(socketfd, msg, sizeof(MSG), 0);
recv(socketfd, msg, sizeof(MSG), 0);
printf(" ");
printf("%s\n", msg->data);
}
return;
}
void do_history(int socketfd, MSG *msg)
{
msg->type = H;
send(socketfd, msg, sizeof(MSG), 0);
while ( 1 )
{
recv(socketfd, msg, sizeof(MSG), 0);
if (msg->data[0] == '\0') break;
printf("%s\n", msg->data);
}
return;
}
int main(int argc, char *argv[])
{
int socketfd ;
struct sockaddr_in server_addr;
MSG msg;
if (argc < 3)
{
printf("Usage : %s <serv_ip> <serv_port>\n", argv[0]);
exit(-1);
}
if ((socketfd = socket(PF_INET, SOCK_STREAM, 0)) < 0)
{
perror("fail to socket");
exit(-1);
}
bzero(&server_addr, sizeof(server_addr));
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)
{
perror("fail to connect");
exit(-1);
}
int n;
while ( 1 )
{
printf("************************************\n");
printf("* 1: register 2: login 3: quit *\n");
printf("************************************\n");
printf("please choose : ");
if (scanf("%d", &n) <= 0)
{
perror("scanf");
exit(-1);
}
switch ( n )
{
case 1 :
do_register(socketfd, &msg);
break;
case 2 :
if (do_login(socketfd, &msg) == 1)
goto next;
break;
case 3 :
close(socketfd);
exit(0);
}
}
next:
while ( 1 )
{
printf("***********************************************\n");
printf("* 1: query_word 2: history_record 3: quit *\n");
printf("***********************************************\n");
printf("please choose : ");
if (scanf("%d", &n) < 0)
{
perror("scanf");
exit(-1);
}
switch ( n )
{
case 1 :
do_query(socketfd, &msg);
break;
case 2 :
do_history(socketfd, &msg);
break;
case 3 :
close(socketfd);
exit(0);
}
}
return 0;
}
- 英英词典client
- 英汉词典&英英词典
- 英英词典server
- sqlite3_英英词典
- 在线英英词典
- 中英词典
- 英译词典
- 常用在线英汉、英英词典
- 第十五周项目5--中英词典
- 词典
- 词典
- 词典
- 词典
- 词典
- 词典
- 词典
- 词典
- 词典
- POJ 2253 Frogger
- hdu 4324
- WebGame开发总结
- MyEclipse里有些特殊符号,不知道还以为是乱码
- C++11特性--基于范围的for循环,新的STL容器,新的STL方法( cbegin(),cend(),crbegin(),crend())
- 英英词典client
- ubuntu小技巧
- ASP.NET 3.5 如何安裝在windows 2003的IIS 6.0
- gVim的字体和背景颜色设置
- CTime类
- 使用MiniTools更方便的调试TQ210裸机程序
- Tower Defence hdu3958
- 鄙人flex小试身手,做了一个计算器
- 关于hibernate的Could not execute JDBC 错误的处理办法