开发一个基于Internet的收费软件,用Socket编程,发送收费数据,有些疑问,盼解答!

yrb 2008-05-29 11:24:29
各位好!
一个基于Internet的收费软件,c/s结构,基于Socket编程,一笔收费业务的处理流程如下:
1、客户端发送收费信息,可能成功、也可能失败
2、客户端等待服务端回应
3、服务端收到收费信息
4、服务端将收费信息写到数据库,可能成功、也可能失败
5、服务断回应客户端数据是否保存成功,可能成功、也可能失败

我能够确定的部分:
在步骤1如果失败,客户端确定这笔业务失败,重新处理
如果步骤4失败,步骤5成功,客户端确定这笔业务失败,重新处理

我不能确定的部分:
步骤1发送成功后,步骤3是否一定能够收到?

如果步骤4成功,步骤5失败,客户端该怎么做呢?


其实我的问题就一个:如何能确保客户端总是得到服务端数据是否保存成功?

希望有经验的朋友帮帮忙!象银行、邮电那些网络系统是怎么做的?
...全文
82 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
scq2099yt 2008-05-29
  • 打赏
  • 举报
回复
客户端发给服务器的数据都要求在应用层有回码即可。
zhoujianhei 2008-05-29
  • 打赏
  • 举报
回复
有个东西叫事务,专门处理怎样的问题。
fancylea 2008-05-29
  • 打赏
  • 举报
回复
果步骤4成功,步骤5失败,客户端该怎么做呢?
1。在服务端:设计一个命令队列,这个队列信息要保存起来。等客户端一旦发送成功才清除。否则按照一定的算法重试。(短信网关就这样做的)
2。在客户端可以做一个和服务器同步的功能。可以手动和服务段同步。

PS:其实一般财务系统都是客户端生成一个一定格式支付文件(可以保存)。 然后保证支付文件能正确被服务器受到就好了 。 服务端根据支付文件来操作。服务器自己去保证操作成功。 最后客户端查询支付状态。
  • 打赏
  • 举报
回复
步骤1发送成功后,步骤3是否一定能够收到?
是的

如果步骤4成功,步骤5失败,客户端该怎么做呢?

这个比较麻烦一点,一般服务器重发一定次数客户端没收到的话.
就记录日志,由手工查账对账.
yrb 2008-05-29
  • 打赏
  • 举报
回复
可以继续加分,欢迎讨论!!
yrb 2008-05-29
  • 打赏
  • 举报
回复
其实这个问题在B/S程序中也存在,试想:浏览器将用户的操作提交到服务器,服务器完成操作后,给浏览器应答,这个时候如果网络出现了问题,这个应答丢失了,浏览器没有收到,那操作员该怎么确定前面的操作已经被服务器接受或丢弃呢?
yrb 2008-05-29
  • 打赏
  • 举报
回复
谢谢诸位的参与!

希望有开发类似软件的朋友能够指点,最好能用伪码描述,或者源码,呵呵!!
yrb 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 akirya 的回复:]
步骤1发送成功后,步骤3是否一定能够收到?
是的

如果步骤4成功,步骤5失败,客户端该怎么做呢?

这个比较麻烦一点,一般服务器重发一定次数客户端没收到的话.
就记录日志,由手工查账对账.
[/Quote]

谢谢指点!

“步骤1发送成功后,步骤3是否一定能够收到?
是的 “
我看资料介绍,这个好像不一定,因为Send是将数据拷入缓存区后即返回,等待协议完成数据传输,不知道这个资料是否准确?


“如果步骤4成功,步骤5失败,客户端该怎么做呢?

这个比较麻烦一点,一般服务器重发一定次数客户端没收到的话.
就记录日志,由手工查账对账.”


我也打算采取类似的方法。
cnzdgs 2008-05-29
  • 打赏
  • 举报
回复
网络传输失败就重试,如果连接段开就重新建立连接。
gyk120 2008-05-29
  • 打赏
  • 举报
回复
从delphi版赶来膜拜
应该就是一个消息队列的处理
通过return判断
if return=error—succse什么的
很久没碰C++,都忘干净了

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧