我做的一个客户端程序,需要获取服务器端发来的数据,有的时候数据量比较大,由于网络是走的3G网,比如我获取菜单,数据可能有1K,这个数据包前面(可能几十或者几百byte)的还能获取并且解析出来,后面的数据就没了,用的socket连接,当我接收到数据的时候就把socket断掉了,可能网络堵塞,数据并没有接收完,该怎么办啊,请求各位大虾帮帮忙,多谢了!!!

解决方案 »

  1. 你可以做断点下载,比如你可以解析的最后一个元素,然后后面就因为断网不能获取了,这个时候你可以获取一个临界点(它的前面已经下载好了,可以解析,后面因为断网不能获取),把前面的部分保存在本地
    等到下次可以联网了,再下载其他的
    可以通过:Range: bytes=5275648-来设置断点
      

  2. 因为我只接收一次,接收到数据就break出去了,不再接收,后面的数据不一定是没了,可能是由于网络堵塞,没能同时接收完,我有数据包包头知道这条数据的长度,就是理论接收到的跟实际接受到的不同,有可能实际接收到的少
      

类似问题 »