一.客户端发送数据到服务器端,服务器处理完数据后发送给客户端确认信息,客户端根据确认信息
删除发送成功数据,当服务器端已经把所传数据处理成功,但没有把确认信息成功发送到客户端,这时客户端就会重发此信息,导致数据重复发送,请问各位高手,我该怎么办。先谢谢了

解决方案 »

  1.   

    回复:mxj2000
    服务器端已经把所传数据处理成功,但没有把确认信息成功发送到客户端.
    客户端 再发个请求到服务器查询一下 上次的请求有没有发送成功答:我的服务器端数据量很大,要是在去查一个会很慢的,并且服务器端也无法去查因为所接收的数据有可能是一样的没有法子辨别出来。谢谢请在帮我想一想
      

  2.   

    你的客户端在发送数据时可以增加一个流水号字段,根据当前时间组合IP地址或者其他一些保证每次发送都是唯一的ID号。然后服务器每次处理请求时,先去数据库查询是否存在该流水号,若存在直接返回给客户端成功标志,不再做任何处理,若不存在则执行正常处理。我有个程序就是这么做的。
      

  3.   

    回复:coffee36
    你的客户端在发送数据时可以增加一个流水号字段,根据当前时间组合IP地址或者其他一些保证每次发送都是唯一的ID号。然后服务器每次处理请求时,先去数据库查询是否存在该流水号,若存在直接返回给客户端成功标志,不再做任何处理,若不存在则执行正常处理。我有个程序就是这么做的
    答:这设计很好,但有两个问题,第一服务器端会有点慢。第二如果客户端的流水号以后不会了那就出大问题了。谢谢,你还有没有别的好办法,
      

  4.   

    写程序抓住重点,该在那里控制就在那里控制,客户端发数据服务器没回应时,客户端应该等到个timeout再进行处理
      

  5.   

    写程序抓住重点,该在那里控制就在那里控制,客户端发数据服务器没回应时,客户端应该等到个timeout再进行处理,至于等待是阻塞式的还是并行的,看你的程序需要了。
      

  6.   

    回复:qin_wei
    写程序抓住重点,该在那里控制就在那里控制,客户端发数据服务器没回应时,客户端应该等到个timeout再进行处理,至于等待是阻塞式的还是并行的,看你的程序需要了。答:timeout重发没有问题,但是重发了服务器端会重,你不会说在让我在服务器端记一个流水号,判断数据是否处理过了,这样数据量大了会慢的.谢谢你