使用SOCKET如何判断传输的数据的大小,

RomandAccessFile 2004-08-16 06:14:47
如题
...全文
930 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
RomandAccessFile 2004-08-18
  • 打赏
  • 举报
回复

好,明白,就到这里了,分数不多,各位见谅,其实我也是象"drinkant(喝酒的蚂蚁)信誉:100"这样去解决的,但是,我想求更好的一个方法!
我实在不想让服务器去生成一个文件,然后让客户端去Download,也是在程序中,也象杀毒软件一样去在线升级,但我总觉得可以由传输层去得到数据包的大小,看来我错了
drinkant 2004-08-17
  • 打赏
  • 举报
回复
那就是了
你自己都不晓得数据有多大,作为传输层,它怎么知道数据总量
它的职责只是有数据就传
关键还在你自己
不知道数据总量,那就只能做一个类似XP启动时的进度显示,不给出目前完成的百分比
仅仅以动态的方式告诉用户传输正在进行
RomandAccessFile 2004-08-17
  • 打赏
  • 举报
回复
但是我就是不知道发送文件的大小,他不是文件,他只是数据流
ChDw 2004-08-17
  • 打赏
  • 举报
回复
如果需要知道大小,你应该在你自己的传输层上做
你先在发送者这边发送文件的大小,TCP协议根本不可以知道你后继还有多少数据
RomandAccessFile 2004-08-17
  • 打赏
  • 举报
回复
对信息头里返回文件的大小,在Http下载文件来说可以得到,如果我的Socket也是用来传文件的,这我也可以知道传输数据的大小,但是我不是传文件的,比如,我的服务器上有一个表有十几万的数据,要插入本地的数据库(不知道是多少条),在JAVA中,一般我会使用一个类组,去定义,封装,但是如果这样去作,在数据传输的过程中,我没有办法知道这个数据全部到达本地的时间,所以不知道有多久,我想通过数据包的大小及到达本地的包的大小来判断进度,有没有什么好的办法
ynsfsw 2004-08-17
  • 打赏
  • 举报
回复
要不这样:你把文件分成100份来发!每发一份进度条走1/100行不?别忘了给钱啊!!
halfdream 2004-08-17
  • 打赏
  • 举报
回复
TCP协议对上层只提供可靠的数据流服务。。
过于传输的数据大小?什么意思?当然是恕不提供。

就拿用HTTP下载文件来说,服务器先在信息头里返回文件大小,然后才在信息体里
一股脑的传文件数据流。。
这些信息,当然只能由客户端与服务端在应用层取得。
RomandAccessFile 2004-08-17
  • 打赏
  • 举报
回复
高手帮忙呀,,我在线,谁给我解决,在西安的我请他吃饭,在外地的,我给您50块,想哪吃去哪吃去
RomandAccessFile 2004-08-17
  • 打赏
  • 举报
回复
那这个方法说:
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,救命呀
liusoft 2004-08-17
  • 打赏
  • 举报
回复
你还不信啊,available总是返回-1
RomandAccessFile 2004-08-17
  • 打赏
  • 举报
回复
,InputStream 的available()是用来干什么用的,为什么没有效果
RomandAccessFile 2004-08-17
  • 打赏
  • 举报
回复
文件的传输总是有大小可查,在使用UDP发送数据包的时候可以用DatagramSocket,可以使 用,,DatagramPacket的getLength()方法得到数据包的长度,我想Socket应该是有,有哪位用过的,给个提示呀
liusoft 2004-08-17
  • 打赏
  • 举报
回复
那就无法知道了,一般在做socket通信的时候都会给每个要传输的数据包固定一个头,传输数据前需要把包的大小填在包头里面,你可以去看看短信的CMPP协议就是这样一种做法

qqbz 2004-08-17
  • 打赏
  • 举报
回复
觉得java是运行在tcp之上的,相当于应用层。
用socket就是应用到应用的服务。不知道java是否还提供了更底层的方法。
关注一下。
RomandAccessFile 2004-08-17
  • 打赏
  • 举报
回复
在报文里不是有关于要传送的数据包大小,关键是在JAVA中如何能得知
RomandAccessFile 2004-08-17
  • 打赏
  • 举报
回复
这个我也知道,其实是我想知道进度,,是传输层的一个问题,,在数据包分解以前我想知道数据包的大小,作一个进度条,注意,这里的数据包不是文件
flashactionscript 2004-08-17
  • 打赏
  • 举报
回复
是否可以定义一个类
将接收的数据流动态的赋予一个字符串 然后读出字符串的大小
这样不就得到数据总量了吗?
liusoft 2004-08-16
  • 打赏
  • 举报
回复
一直读啊读啊,直到-1 :D


http://www.javayou.com

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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