1、ATM文件传输机制1 文件传输标准文件传送标准包含了几种情况: ATM主动发文件到ATMP:如发送对帐文件 ATM主动收取ATMP的文件:如明细查询 ATM被动接收文件:如更新的广告画面 ATM被动发送文件:如电子日志的上传 ATMP主动发送文件到ATM监控:如电子日志的传送 ATMP主动接收ATM监控:如设备信息文件的同步; ATMP被动接收ATM监控:如广告文件的发送 ATMP被动发送ATM监控;2 简要流程2.1 ATM主动发文件到ATMP (发送对帐文件)giPutFile(.) = ATMP 发送文件请求 - ATMP 接受文件请求 ATMP 接收主机明细查询应答 ATMP2.3 A
2、TM被动接收ATMP文件(下发广告画面) 接收主机下传文件请求 ATMP收到文件请求 - ATMP2.4 ATM被动发送到ATMP文件(下提电子流水文件)接收主机提取文件请求 ATMP发送完毕请求 - ATMP 2.5 ATMP主动发送文件到ATM监控 giPutFile(.) = 监控 发送文件通知到ATM监控 - 监控 接收应答 监控giPutFile(.) = 监控 接收应答(监控文件名) - 监控 2.7 ATMP被动接收ATM监控文件 giPutFile(.) = 监控 发送文件通知到ATMP 监控2.8 ATMP被动发送文件到ATM监控; 发送文件接受请求到ATMP 监控 接收应答
3、(文件名) - 监控 3 文件传送协议(Client)int giPutFile(int socket,char* scr_path, char* dest_path, int max_buf_len)1 发送报文头FileHeader2 Atmp响应RESPONSE3 发送文件内容报文FILEDATA4 Atmp响应RESPONSE5 重复3,4 直到文件内容发送完毕。6 如Atmc 发送FILEDATA的最后一个文件结束标志为E,则等到RESPONSE为“OK”成功退出7 如果在文件发送过程中,发送失败或组织发送抱文失败,则退出;接受失败或抱文RESPONSE!=OK”,则退出。Int g
4、iGetFile(int socket,char* scr_path, char* dest_path, int max_buf_len)1 发送报文头FILEHEADER2 Atmp返回FILEDATA3 Atmc响应RESPONSE4 重复2,3 直到文件内容发送完毕。5 当Atmc 接收FILEDATA的最后一个文件结束标志为E,取文件成功,主动拆链。8 如果在文件接收过程中,接收失败或取到非法报文失败,则退出;发送RESPONSE失败,则退出。4 文件传送协议(Server)长连接:int iTransWithAtmLong(int socket, char pszHeaderBuf,
5、 int iHeaderLen);1 接受ATM发送的报文头FileHeader。2 根据报文头判断是提取文件还是下发文件u, d3 If trans_sign=u then 发送Respond 给Atmc 接收Atmc发送的FILEDATA发送Respond 给Atmc . if 文件结束 then sleep(1);exit;else if trans_sign = d then 判断Scr_fname 是否存在,如果不存在,DATELEN =0;发送FILEDATA 给Atmc 接受Atmc发送的Respond 发送FILEDATA 给Atmc if 文件结束 then sleep(1)
6、;exit;短连接:GiTransWithAtmShort(int socket)1Accept atms connect。 1. 接受ATM发送的报文头FileHeader。2. 根据报文头判断是提取文件还是下发文件u, d3. If trans_sign=u then 发送Respond 给Atmc 接收Atmc发送的FILEDATA发送Respond 给Atmc . if 文件结束 then sleep(1);exit;else if trans_sign = d then 判断Scr_fname 是否存在,如果不存在,DATELEN =0;发送FILEDATA 给Atmc 接受Atmc
7、发送的Respond 发送FILEDATA 给Atmc if 文件结束 then sleep(1);exit;报文结构struct FileHeader char cmd_code6; /*交易码*/ char scr_fname80; /*源文件名*/ char dest_fname80; /*目标文件名*/ char filelen10; /*文件长度*/ char pstart10; char trans_sign; /*传输标志 U-提取文件 D-发送文件*/ char max_buf_len5; /* 在文件传输过程中每个报文的最大长度,不管是put, 还是get,全部采用该域得到最大报文长度 */ struct FileData char cmd_code6; /*交易码*/ char filedata_sign; /*报文状态 S-起始报文 M-中间报文 E-结束报文*/ char fileoffset10; /*文件偏移量*/ char datalen5; /*文件数据长度*/ char databuflen;len = MAX_BUF sizeof(SendFileData) - 5; /* 5为tcp链路上的报文长度 */struct Response char cmd_code6; char filestatus5; /* OK, ERROR */
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1