一直读啊读啊,直到-1 :D
http://www.javayou.com

解决方案 »

  1.   

    在报文里不是有关于要传送的数据包大小,关键是在JAVA中如何能得知
      

  2.   

    觉得java是运行在tcp之上的,相当于应用层。
    用socket就是应用到应用的服务。不知道java是否还提供了更底层的方法。
    关注一下。
      

  3.   

    那就无法知道了,一般在做socket通信的时候都会给每个要传输的数据包固定一个头,传输数据前需要把包的大小填在包头里面,你可以去看看短信的CMPP协议就是这样一种做法
      

  4.   

    文件的传输总是有大小可查,在使用UDP发送数据包的时候可以用DatagramSocket,可以使 用,,DatagramPacket的getLength()方法得到数据包的长度,我想Socket应该是有,有哪位用过的,给个提示呀
      

  5.   

    ,InputStream 的available()是用来干什么用的,为什么没有效果
      

  6.   

    你还不信啊,available总是返回-1
      

  7.   

    那这个方法说:
    Returns the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method for this input stream.
    那不是说返回这个字节数,我YM呀,项目作到现在,在这一块卡壳了,唉,我要作一个数据下载进度条,却不能作到,YM,救命呀
      

  8.   

    TCP协议对上层只提供可靠的数据流服务。。
    过于传输的数据大小?什么意思?当然是恕不提供。就拿用HTTP下载文件来说,服务器先在信息头里返回文件大小,然后才在信息体里
    一股脑的传文件数据流。。
    这些信息,当然只能由客户端与服务端在应用层取得。
      

  9.   

    对信息头里返回文件的大小,在Http下载文件来说可以得到,如果我的Socket也是用来传文件的,这我也可以知道传输数据的大小,但是我不是传文件的,比如,我的服务器上有一个表有十几万的数据,要插入本地的数据库(不知道是多少条),在JAVA中,一般我会使用一个类组,去定义,封装,但是如果这样去作,在数据传输的过程中,我没有办法知道这个数据全部到达本地的时间,所以不知道有多久,我想通过数据包的大小及到达本地的包的大小来判断进度,有没有什么好的办法
      

  10.   

    如果需要知道大小,你应该在你自己的传输层上做
    你先在发送者这边发送文件的大小,TCP协议根本不可以知道你后继还有多少数据
      

  11.   


    好,明白,就到这里了,分数不多,各位见谅,其实我也是象"drinkant(喝酒的蚂蚁)信誉:100"这样去解决的,但是,我想求更好的一个方法! 
    我实在不想让服务器去生成一个文件,然后让客户端去Download,也是在程序中,也象杀毒软件一样去在线升级,但我总觉得可以由传输层去得到数据包的大小,看来我错了