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

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

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

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

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


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

希望有经验的朋友帮帮忙!象银行、邮电那些网络系统是怎么做的?
...全文
157 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
大大怪老张 2008-05-31
  • 打赏
  • 举报
回复
Client Server
| ———发送数据——> |
| <——收到数据—— |
| 处理数据
| <——确认处理成功—— |


你考虑一下一次请求二次确认这种模型。
aniugee 2008-05-31
  • 打赏
  • 举报
回复
用UDP也行,同时加上一个GetTickCount标识来比较是否当前发送的数据
然后设置一下延时的时间,服务器成功后返回这个带GetTickCount标识的信息
否则重发
gyk120 2008-05-29
  • 打赏
  • 举报
回复
关于步骤1和步骤3的问题:设定一个等待延时,时间过了还没收到的话再重发消息
4和5:还是设置延时重发消息吧……
我很菜,有错误的地方还请大侠们多多指教
gyk120 2008-05-29
  • 打赏
  • 举报
回复
这就是我所说的延时重发了
规定一个时间段,超过这个时间段没有收到消息的话就重发消息
丢失的话,唯一弥补的办法就是重发
yrb 2008-05-29
  • 打赏
  • 举报
回复
其实这个问题在B/S程序中也存在,试想:浏览器将用户的操作提交到服务器,服务器完成操作后,给浏览器应答,这个时候如果网络出现了问题,这个应答丢失了,浏览器没有收到,那操作员该怎么确定前面的操作已经被服务器接受或丢弃呢?
yrb 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 Adayuer 的回复:]
传输协议使用 TCP,保证你传输不会丢失数据;

剩下的僵哥答了
[/Quote]

TCP是可以保证数据传输的,但我的疑问是:几个连续的步骤都成功,或都失败。我相信您理解我的意思。

谢谢参与!
yrb 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 unsigned 的回复:]
步骤1发送成功后,步骤3是否一定能够收到?
>>除非你的服务端程序写得有问题
如果步骤4成功,步骤5失败,客户端该怎么做呢?
>>重发,记得发起的时候带上业务序号标识,如此服务端检查已经做到了第四步,就直接应答成功。
[/Quote]

谢谢你的建议!

我看资料,Send成功,不一定就能确保对方收到数据,因为Send仅仅是将发送的数据拷入缓存区,缓存区的数据需要协议发送,因此Send成功不一定能保证对方收到。
大大怪老张 2008-05-29
  • 打赏
  • 举报
回复
传输协议使用 TCP,保证你传输不会丢失数据;

剩下的僵哥答了
gyk120 2008-05-29
  • 打赏
  • 举报
回复
确实是两个
刚才到C版膜拜去了……
daixiulin 2008-05-29
  • 打赏
  • 举报
回复
up
僵哥 2008-05-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 akirya 的回复:]
发了几个版?
[/Quote]
报告楼上,两个版。哈哈。
  • 打赏
  • 举报
回复
发了几个版?
僵哥 2008-05-29
  • 打赏
  • 举报
回复
步骤1发送成功后,步骤3是否一定能够收到?
>>除非你的服务端程序写得有问题
如果步骤4成功,步骤5失败,客户端该怎么做呢?
>>重发,记得发起的时候带上业务序号标识,如此服务端检查已经做到了第四步,就直接应答成功。

1,594

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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