客户端
#include <myhead.h>
int main(int argc, const char *argv[])
{
//创建流式套接字
int cfd=socket(AF_INET,SOCK_STREAM,0);
printf("socket success\n");
//填充服务器地址
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(8888);
sin.sin_addr.s_addr=inet_addr("192.168.124.6");
//连接服务器
if(connect(cfd,(struct sockaddr*)&sin,sizeof(sin))<0)
{
perror("connect");
return -1;
}
printf("connect success\n");
char buf[128]="";
ssize_t res=0;
while(1)
{
bzero(buf,sizeof(buf));
printf("输入账户和密码:");
fgets(buf,sizeof(buf),stdin);
buf[strlen(buf)-1]='\0';
write(cfd,buf,sizeof(buf));
printf("申请注册成功\n");
bzero(buf,sizeof(buf));
recv(sfd,buf,sizeof(buf),0);
printf("%s\n",buf);
}
close(cfd);
return 0;
}
服务器
#include <myhead.h>
#define PORT 8888
#define IP "192.168.124.6"
int main(int argc, const char *argv[])
{
sqlite3 *db=NULL;
if(sqlite3_open("./1sql.db",&db)!=0)
{
printf("open wrong\n");
sqlite3_errmsg(db);
}
//创建表格
char sql[128]="create table if not exists stu(id int,name char,score float);";
char *errmsg=NULL;
if(sqlite3_exec(db,sql,NULL,NULL,&errmsg)!=0)
{
fprintf(stderr,"sqlite3_exec:%s\n",errmsg);
return -1;
}
printf("create success\n");
int sfd=socket(AF_INET,SOCK_STREAM,0);
printf("socket success\n");
//允许端口被重复使用
int reuse=1;
setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse))<0;
printf("允许端口被重复使用\n");
//bind
struct sockaddr_in sin;
sin.sin_family=AF_INET;
sin.sin_port=htons(PORT);
sin.sin_addr.s_addr=inet_addr(IP);
bind(sfd,(struct sockaddr*)&sin,sizeof(sin));
printf("bind success\n");
//listen
listen(sfd,128);
//存储客户端信息0
struct sockaddr_in cin;
socklen_t addrlen=sizeof(cin);
int newfd = accept(sfd,(struct sockaddr*)&cin,&addrlen);
printf("[%s:%d] newfd =%d 客户端连接成功__%d__\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),newfd,__LINE__);
char buf[128]="";
ssize_t res=0;
int flag=0;
while(1)
{
bzero(buf,sizeof(buf));
//接收数据
res=recv(newfd,buf,sizeof(buf),0);
else if(0==res)
{
printf("[%s:%d] newfd=%d : 客户端下线 __%d__\n",\
inet_ntoa(cin.sin_addr),ntohs(cin.sin_port),newfd,__LINE__);
break;
}
int i;
char str[128]="";
for(i=0;buf[i]!=' ';i++)
{
str[i]=buf[i];
}
str[i]=buf[i];
char sql[128]="select name from stu;";
char **pre=NULL;
int row,column;
char* errmsg=NULL;
if(sqlite3_get_table(db,sql,&pre,&row,&column,&errmsg)!=SQLITE_OK)
{
fprintf(stderr,"sqlite3_get_table: %s \n",errmsg);
return -1;
}
for(int i=0;i<row+1;i++)
{
for(int j=0;j<column;j++)
{
if(strcmp(str,pre[(i*column)+j])==0)
{
printf("账户已存在,注册失败\n");
flag=1;
}
}
}
if(flag==0)
{
sqlite3_free_table(pre);
char sql1[128]="";
char* p1=buf+strlen(str);
sprintf(sql1,"insert into stu values(\"%s\",\"%s\");",str,p1);
char* errmsg1 = NULL;
if(sqlite3_exec(db,sql1,NULL,NULL,&errmsg1)!=SQLITE_OK)
{
fprintf(stderr,"sqlite3_exec: %s __%d__\n",errmsg1,__LINE__);
return -1;
}
printf("insert success\n");
if(strcmp(buf,"quit")==0)
break;
//发送数据
strcat(buf," add success");
printf("send success\n");
}
else if(flag==1)
break;
}
//关闭套接字
close(sfd);
close(newfd);
return 0;
}