日期:2014-05-20  浏览次数:20669 次

socket 求解题思路
今天看到一个这样的题目

A和B两个系统都有表T_Test。
create table T_Test (
  tel varchar(20) NOT NULL COMMENT '电话号码',
  name varchar(100) COMMENT '姓名',
  address varchar(200) COMMENT '地址',
  email varchar(50) COMMENT '邮箱',
  PRIMARY KEY (tel)
);
B系统的数据来自于A系统,并且要和A系统的保持一致。
当A系统的数据发生变化时,A系统会主动通知B系统更新数据。接口如下:
接口名称:SyncData
接口编码:H1.1
功能描述: A系统T_Test表数据发生变动时,通过本接口通知B系统
接口提供方:B系统
调用场景:A系统 >> B系统
输入参数描述:
参数名称 出现次数 参数类型 备注
StreamingNo 1 VARCHAR2(10) 流水号。可用于调用/提供双方比较接口调用情况10位,从0开始,用满归零
TimeStamp 1 VARCHAR2(14) 时间戳.格式YYYYMMDDHHmmSS
Operate 1 SMALLINT 操作类型 1-新增 2-修改 3-删除
Tel 1 VARCHAR2(20) 电话号码
Name 0..1 VARCHAR2(100) 姓名,Operate=3时可空
Address 0..1 VARCHAR2(200) 地址,Operate=3时可空
Email 0..1 VARCHAR2(50) 邮箱,Operate=3时可空
输出参数描述:
参数名称 出现次数 参数类型 备注
StreamingNo 1 VARCHAR2(10) 流水号。将调用的StreamingNo原样返回,保证调用/返回的同步
ResultCode 1 SMALLINT 操作结果的代码。
0表示正常
-1表示错误(可自定义,给出说明)
ResultDetail 1 VARCHAR2(100) 简单的结果描述说明。

A系统和B系统之间通过socket进行通信,请求接口数据包格式如下:
项目 长度(BYTES) 说明
包开始标志 4 内容恒定为 ”FFFF”
包长度 6 包长度为整个包长度,数字转换成字符串,长度不足在左边补字符串‘0’
包的标识号 10 流水号(即接口协议的StreamingNo)长度不足在左边补字符串‘0’
时间戳 14 即接口协议的TimeStamp,格式为YYYYMMDDHHmmSS
操作的类型 1 即接口协议的Operate:1:新增,2:修改,3:删除
参数个数 2 数字转换成字符串,左补字符串‘0’
包体 可变长度 结构参见下面的描述
包体由【参数个数】个以下的结构组成。KEY和SIZE的定义见下表定义:
? KEY : 3字节(参数id)
? SIZE: 3字节(数字转换成字符串,左补字符串‘0’)
? VALUE: SIZE字节的参数值
KEY值 说明
000 电话号码
001 姓名
002 地址
003 邮箱
接口数据例子:
FFFF 000096000000000 12011081512131410400001 102038631234001004test002011 addresstest003009emailtest

返回消息数据包格式如下:
项目 长度(BYTES) 说明
包开始标志 4 内容恒定为 ”FFFF”
包长度 6 包长度为整个包长度,数字转换成字符串,长度不足在左边补字符串‘0’
包的标识号 10 流水号(即接口协议的StreamingNo)长度不足在左边补字符串‘0’
请求执行结果标识 4 即接口协议ResultCode,数字转换成字符串,左补字符串‘0’
结果描述字符串 可变长度 由SIZE+VALUE结构组成:
SIZE:3字节(数字转换成字符串,左补字符串‘0’)
VALUE:SIZE字节的参数值
返回接口数据例子:
FFFF00003400000000010000007success

1. 实现B系统,能接收来自A系统的消息,并更新T_Test表数据
a) B系统是一个socket server,接收数据请求并实现数据库更新操作,并将处理结果返回给调用者(提示:socket通信可用cindy实现)。
b) 考虑如何处理A和B存在数据不一致的情况,并说明这样处理的理由。例如:A通知B新增一条数据,但B系统已经存在同主键的数据;或A通知B修改/删除一条数据,但B中不存在该数据。
c) 能同时处理多个数据请求(提示:多线程)
2. 用java写一个client 客户端,模拟A系统发送数据更新请求。
3. 写出单元测试的代码,以及用到的测试数据
a) 设计单元测试用的测试数据;对所用的每组测试数据,说明测试的目的
b) 考虑并发的测试

这个题目的接口数据包格式看的不是很明白,
我的思路是:在B这个server里面,可以实时的查看A系统有没有SyncData接口的条用,如果有的话在根据具体的参数做具体的数据库操作。 
请大神们指教下是否正确。。。

------解决方案--------------------
帮你顶一下 学习
------解决方案--------------------
帮楼主顶一下!
------解决方案--------------------
CSDN不帮做作业~~
------解决方案--------------------
探讨
我的思路是:在B这个server里面,可以实时的查看A系统有没有SyncData接口的条用,如果有的话在根据具体的参数做具体的数据库操作。
请大神们指教下是否正确。。。