server.c代码:

#include <stdio.h>
#include <stdlib.h>
#include "sqlite3.h"
#include <sys/socket.h>
#include <sys/types.h>
#include <string.h>static int callback2(void *NotUsed, int argc, char **argv, char **azColName)
{ int i=0,k=0; record_num=argc;for(i=0; i<argc; i++){strcpy(s_callback2[i],argv[i] ? argv[i] : "NULL");} printf("\n");return 0;
}
int record_num=0;
int main(
{int server_sockfd;//服务器端套接字  int client_sockfd;//客户端套接字  int len;  struct sockaddr_in my_addr;   //服务器网络地址结构体  struct sockaddr_in remote_addr; //客户端网络地址结构体  int sin_size;  char buf[BUFSIZ];  //数据传送的缓冲区  memset(&my_addr,0,sizeof(my_addr)); //数据初始化--清零  my_addr.sin_family=AF_INET; //设置为IP通信  my_addr.sin_addr.s_addr=INADDR_ANY;//服务器IP地址--允许连接到所有本地地址上  my_addr.sin_port=htons(8000); //服务器端口号  /*创建服务器端套接字--IPv4协议,面向连接通信,TCP协议*/  if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0)  {    perror("socket");  return 1;  }  /*将套接字绑定到服务器的网络地址上*/  if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0)  {  perror("bind");  return 1;  }  /*监听连接请求--监听队列长度为5*/  listen(server_sockfd,5);  sin_size=sizeof(struct sockaddr_in);  /*等待客户端连接请求到达*/  if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0)  {  perror("accept");  return 1;  }  printf("accept client %s/n",inet_ntoa(remote_addr.sin_addr));  len=send(client_sockfd,"Welcome to my server/n",21,0);//发送欢迎信息  /*接收客户端的数据并将其发送给客户端--recv返回接收到的字节数,send返回发送的字节数*/  while((len=recv(client_sockfd,buf,BUFSIZ,0))>0))  {buf[len]='/0';  printf("%s/n",buf);  /*if(send(client_sockfd,buf,len,0)<0)  {  perror("write");  return 1;  }*/char s_callback2[100][1024];memset(s_callback2,' ',sizeof(s_callback2));char *ErrMsg = 0;int ret = 0;int i=0;sqlite3 *db = 0;ret = sqlite3_open("mail.db",&db);if(ret != SQLITE_OK){fprintf(stderr,"Cannot open db: %s\n",sqlite3_errmsg(db));return 1;}char sql[1024];memset(sql,0,sizeof(sql));char sender[13];memset(sender,0,sizeof(sender));char recer[13];memset(recer,0,sizeof(recer));char date_time[27];memset(date_time,0,sizeof(date_time));char title[81];memset(title,0,sizeof(title));char usrname[13];memset(usrname,0,sizeof(usrname));//char contactor[13];//memset(contactor,0,sizeof(contactor));switch(buf[0]){case '2':{if(buf[1]=='1'){//向客户端发送"已发送"内容memset(sender,0,sizeof(sender));memcpy(sender,buf+3,(int)buf[2]);memset(sql,0,sizeof(sql));memset(s_callback2,0,sizeof(s_callback2));sprintf(sql,"SELECT title,date_time FROM send WHERE sender='%s'AND status_sender=2 OR status_sender=5 OR status_sender=8;",sender);col_num=2;sqlite3_exec(db,sql,callback2,0,&ErrMsg);for(i=0;i<record_num;i++){if(send(client_sockfd,s_callback2[i],len,0)<0)  {  perror("write");  return 1;  }else{printf("send s_callback2[%d] success\n",i);}}record_num=0;}if(buf[1]=='2'){//向客户端发送一封邮件的具体内容memset(sender,0,sizeof(sender));memcpy(sender,buf+3,(int)buf[2]);memset(date_time,0,sizeof(date_time));memcpy(date_time,buf+15,(int)buf[14]);memset(recer,0,sizeof(recer));memcpy(recer,buf+42,(int)buf[41]);memset(sql,0,sizeof(sql));memset(s_callback2,0,sizeof(s_callback2));sprintf(sql,"SELECT content FROM send WHERE date_time='%s' AND sender IN (SELECT sender FROM receive WHERE sender='%s' AND date_time='%s' AND recer='%s');",date_time,sender,date_time,recer);colnum=1;sqlite3_exec(db,sql,callback2,0,&ErrMsg);if(send(client_sockfd,s_callback2[0],len,0)<0)  {  perror("write");  return 1;  }else{printf("send s_callback2[0] success\n");}record_num=0;                }if(buf[1]=='3'){//向客户端发送一封草稿的内容,若有收信人写在content内memset(sender,0,sizeof(sender));memcpy(sender,buf+3,(int)buf[2]);memset(date_time,0,sizeof(date_time));memcpy(date_time,buf+15,(int)buf[14]);memset(sql,0,sizeof(sql));memset(s_callback2,0,sizeof(s_callback2));sprintf(sql,"SELECT content FROM send WHERE sender='%s' AND date_time='%s';",sender,date_time);colnum=1;sqlite3_exec(db,sql,callback2,0,&ErrMsg);if(send(client_sockfd,s_callback2[0],len,0)<0)  {  perror("write");  return 1;  }else{printf("send s_callback2[0] success\n");}record_num=0;    }break;         }case '3':{if(buf[1]=='0'){//向客户端发收信箱内容memset(rec,0,sizeof(recer));memcpy(recer,buf+3,(int)buf[2]);memset(sql,0,sizeof(sql));memset(s_callback2,0,sizeof(s_callback2));                      sprintf(sql,"SELECT s.sender,s.title,s.date_time FROM send s,receive r WHERE s.sender=r.sender AND s.date_time=r.date_time AND recer='%d' AND status_recer=3;",recer);sqlite3_exec(db,sql,callback2,0,&ErrMsg);for(i=0;i<record_num;i++){if(send(client_sockfd,s_callback2[i],len,0)<0)  {  perror("write");  return 1;  }else{printf("send s_callback2[%d] success\n",i);}}record_num=0;}if(buf[1]=='1'){//向客户端发收件箱内容memset(rec,0,sizeof(recer));memcpy(recer,buf+3,(int)buf[2]);memset(sql,0,sizeof(sql));memset(s_callback2,0,sizeof(s_callback2));                       sprintf(sql,"SELECT s.sender,s.title,s.date_time FROM send s,receive r WHERE s.sender=r.sender AND s.date_time=r.date_time AND recer='%d' AND status_recer=3 OR status_recer=6;",recer);sqlite3_exec(db,sql,callback2,0,&ErrMsg);for(i=0;i<record_num;i++){if(send(client_sockfd,s_callback2[i],len,0)<0)  {  perror("write");  return 1;  }else{printf("send s_callback2[%d] success\n",i);}}record_num=0;}if(buf[1]=='2'){//向客户端发已删除箱内容memset(rec,0,sizeof(recer));memcpy(recer,buf+3,(int)buf[2]);memset(sql,0,sizeof(sql));memset(s_callback2,0,sizeof(s_callback2));                       sprintf(sql,"SELECT s.sender,s.title,s.date_time FROM send s,receive r WHERE s.sender=r.sender AND s.date_time=r.date_time AND recer='%d' AND status_recer=4 OR status_recer=7;",recer);sqlite3_exec(db,sql,callback2,0,&ErrMsg);for(i=0;i<record_num;i++){if(send(client_sockfd,s_callback2[i],len,0)<0)  {  perror("write");  return 1;  }else{printf("send s_callback2[%d] success\n",i);}}record_num=0;}break;           }case '4':{if(buf[1]=='0'){memset(usrname,0,sizeof(usrname));memcpy(usrname,buf[3],(int)buf[2]);memset(sql,0,sizeof(sql));memset(s_callback2,0,sizeof(s_callback2));sprintf(sql,"SELECT contactor FROM contact WHERE uarname='%s';",usrname);sqlite3_exec(db,sql,callback2,0,&ErrMsg);for(i=0;i<record_num;i++){if(send(client_sockfd,s_callback2[i],len,0)<0)  {  perror("write");  return 1;  }else{printf("send s_callback2[%d] success\n",i);}}record_num=0;}break;}}  }close(client_sockfd);  close(server_sockfd);  return 0;
}

serach.c代码:

int res_title[81];
int res_content[501];
void search(char* key,char *title,char* content)
{int i=0,j=0,k=0,t=0,c=0;int len_k,len_t,len_c;len_k=strlen(key);len_t=strlen(title);len_c=strlen(content);for(i=0;i<len_k;i++){for(j=0;j<len_t;j++){if(key[i]==title[j]){res_title[t]=j;}}for(k=0;k<len_c;k++){if(key[i]==content[k]){res_content[c]=k;}}}
}

server make:

OBJS = server.o
TARGET = server
CFLAG =    -g -Wall -O2 -lsqlite3all: $(TARGET)$(TARGET): $(OBJS)$(CC) $(CFLAG) -o $(TARGET) $(OBJS)%.o:%.c$(CC) $(CFLAG) -o $@ -c    $?clean:rm -rf $(OBJS) $(TARGET)

gtk make:

#Makefile for zhuce.c
all:gcc -o zhuce zhuce.c `pkg-config --cflags --libs gtk+-2.0`

服务器server.c、搜索serach.c相关推荐

  1. 使用SharePoint Server 2007搜索对象模型编程创建搜索查询

    MOSS Visual How To 使用SharePoint Server 2007搜索对象模型编程创建搜索查询 摘要:学习如何使用Microsoft Office SharePoint Serve ...

  2. 服务器server.cfg文件详解,配合L4D使用

    服务器server.cfg文件详解,配合L6D使用,未知或错误参数说明希望XD补全和修正 该设置文件针对用srcds.exe开服务器并使用LXD插件的情况,用MAP方式开图会无效 文件内容如下: // ...

  3. 饥荒 搜不到指定服务器,运行饥荒就直连特定服务器,无需搜索房间名方法图文教程...

    简介 运行饥荒的时候自动进入某个服务器,无需其他操作.可能很多朋友都在找到底应该怎么操作,下面就给大家分享一下. 作用 1,有时候搜索不出房间名字,这样可以直接进入特定服务器. 2,如果是专门玩一个服 ...

  4. 【Groovy】使用 Groovy 语言开发服务器 Server 和客户端 Client 套接字程序 ( 服务器客户端完整代码示例 | 运行服务器端与客户端效果及过程分析 )

    文章目录 一.服务器端完整代码 Server.groovy 二.客户端完整代码 Client.groovy 三.运行服务器端与客户端效果及过程分析 一.服务器端完整代码 Server.groovy 参 ...

  5. Tomcat 服务器server.xml,web.xml的关键参数配置

    Tomcat 服务器server.xml的关键参数配置 说明:以下文字均以tomcat5.0.30为例进行. 1,配置tomcat服务器访问端口,只需配置Connector的port端口即可.Tomc ...

  6. sql server的搜索_在SQL Server中进行全文本搜索

    sql server的搜索 介绍 (Introduction) In most cases, we will use clustered and non-clustered indexes to he ...

  7. SQL FILESTREAM和SQL Server全文搜索

    In this article, the latest in our series on the SQL FILESTREAM feature, we are going to look at the ...

  8. 服务器文件夹搜索不到,如何将文件夹添加到VSO 2015构建服务器中的搜索路径

    我遇到了我尝试设置的构建服务器的问题. 我们使用telerik,并安装了带有telerik控制面板的库.构建过程搜索DLL的所有错误的地方.如何将文件夹添加到VSO 2015构建服务器中的搜索路径 不 ...

  9. SQL Server全文搜索

    看这篇文章之前请先看一下下面我摘抄的全文搜索的MSDN资料,基本上MSDN上关于全文搜索的资料的我都copy下来了 并且非常认真地阅读和试验了一次,并且补充了一些SQL语句,这篇文章本人抽取了一些本人 ...

  10. BitTorrent网络中基于Kademlia协议到DHT无服务器泛互联网搜索软件推荐

    本文转自 http://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1515544 标题有点长,可能大家不理解什么意思,偶就慢慢地介绍一下, 首先, ...

最新文章

  1. HTML5与CSS3权威指南之CSS3学习记录
  2. Python+PyQt 数据库基本操作
  3. 001.Amoeba读写分离部署
  4. 启明云端分享|一款方便、实用的且适用于ESP32/ESP8266的USB-TTL转接板开发工具推荐
  5. spring中bean的两种注入方式
  6. Silverlight专题(15) - 你自己的视频播放器之自定义MoveToPointSlider
  7. 前端基础:JavaScript 代码风格指南
  8. pycharm和jupyter notebook中的快捷键
  9. 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。
  10. 记一次微信APP支付开发返回-1的坑
  11. 弹幕调试 jquery.danmu.js
  12. H5-ffmpeg.js压缩视频
  13. LeetCode-完成旅途的最少时间
  14. 洛谷 10月 csp-s 模拟赛 T1,T2解析及代码
  15. 【Industry digitization】能源供应商的数字化转型,能源世界正在发生不可逆转的深刻变革
  16. 每日日报20191223
  17. python中出现IndentationError:unindent does not match any outer indentation level是什么问题?
  18. 银河麒麟V10.1 使用root用户时自动重启pulseaudio服务
  19. mysql关于in子查询索引
  20. (20200322已解决)sudo: unable to resolve host iZj6cevtfmqday01Z

热门文章

  1. Gd-DTPA钆元素钆元素对比磁共振造影剂 氟-19磁共振/荧光双模态显影剂19F MRI
  2. IDEA使用教程之创建一个工程(一)
  3. 求证:拉皮手术费多少钱,拉皮手术后会有哪些后遗症,原来如此
  4. 智能柜子锁方案开发,蓝牙智能防盗。
  5. 文件或目录损坏且无法读取怎么办?数据恢复用这招
  6. PR 音频去噪、音频信号增强、音频导出wav文件;
  7. 苹果雪豹操作系统正式版_苹果放出iOS 13andiPadOS beta 2:加入SMB网络共享、APFS硬盘支持...
  8. easyx——c语言实时动画时钟
  9. MSP430G2553学习笔记
  10. < 知识拓展:CSS 中常用的计量单位有哪些? >