实现该场景模拟需要完成三个部分的功能:
1、client,需要完成连接,数据输入,上传,下载等功能
2、server(数据接收部分),需要完成连接,解析数据,保存,提供下载等功能
3、server(数据处理部分),需要完成本地保存和查询node,文件内保存和查询node等功能
一、client:
完成连接功能。
计划建立一个无限循环体,每次循环读取操作选项,确定执行一次上传或是下载操作。
上传:计划建立一个node文件,每次需要进行上传操作时顺序读取文件中的一个个node后,调用上传node函数上传至server。
二、server(数据接收部分)
完成连接功能。
每次收到message包之后,得到操作符并调用对应函数(上传或下载)响应
三、server(数据处理部分)
上传:检索所有已有文件,是否已经保存了对应的node,若有,原地覆盖,若没有,保存至本地内存,若本地内存已满,创建新文件
下载:检索本地,若有则发送(为实现功能分离,实际是从数据处理函数返回给server,server再执行发送功能),没有则继续检索所有文件,有则发送,没有发送空包。
附message.h
#ifndef MESSAGE_20140303 #define MESSAGE_20140303 #define KEY_LEN 32 #define VALUE_LEN 32 typedef struct Node { char key[KEY_LEN]; char value[VALUE_LEN]; }Node; typedef struct Message { int op; int client_num; Node node; }Message; #endif
原文:http://www.cnblogs.com/keepcalmandcarryon/p/3584920.html