社区
Java EE
帖子详情
使用SOCKET如何判断传输的数据的大小,
RomandAccessFile
2004-08-16 06:14:47
如题
...全文
930
18
打赏
收藏
使用SOCKET如何判断传输的数据的大小,
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
Socket
编程快速入门
本课程将理本课程将理啊 论结合实践,带你从零开始,系统学习
Socket
编程技术,让
Socket
的学习不再那么零散与难以掌握,同时会提炼出
Socket
网络
传输
的核心思想与构架,并带你踩坑出坑,增加你的分析与处理问题的啊aasa 能力,完善你的编程思想与知识体系。论结合实践,带你从零开始,系统学习
Socket
编程技术,让
Socket
的学习不再那么零散与难以掌握,同时会提炼出
Socket
网络
传输
的核心思想与构架,并带你踩坑出坑,增加你的分析与处理问题的能力,完善你的编程思想与知识体系。
使用
Socket
进行
数据
传输
当客户端连接后,如果设置了keeplive为 true,当对方没有发送任何
数据
过来,超过一个时间(看系统内核参数配置),那么我们这边会发送一个ack探测包发到对方,探测双方的TCP/IP连接是否有效。TCP在
传输
过程中,实际上会有一个缓冲区用于
数据
的发送和接收,此缓冲区
大小
为:8192,我们可以手动调整其
大小
来优化
传输
效率。方法来设定IO超时时间,当超过设定时间都依然没有收到客户端或是服务端的
数据
时,会抛出异常,我们之前
使用
的都是通过构造方法直接连接服务端,那么是否可以等到我们想要的时候再去连接呢?
使用
Socket
技术进行
数据
传输
、
传输
文件;浏览器访问
Socket
服务器
计算机网络基础 IP地址和端口 TCP和 UDP
Socket
技术
使用
Socket
进行
数据
传输
使用
Socket
传输
文件
使用
浏览器访问
Socket
服务器
使用
socket
传输
10M
大小
的图片
刚开始学习
socket
是为了两台电脑之间能
传输
10M
大小
的图片。 但是网上一些
socket
的例程都是
传输
一个字符串,C++的基础也比较差。摸索了好久才写好这个程序,期间也遇见了很多问题: 1.如何分包发送: 我选用的发送buf是8k字节的,但是如何将10M
大小
的
数据
通过这个8K字节发送出去,困扰了好久,后来通过这个解决了 infile.seekg(0,ios::end); length =
java
使用
socket
实现文件
传输
时的接收
判断
java实现
socket
的关键参考代码主要来自以下文章 java
Socket
文件
传输
当java实现
socket
信息
传输
后,在进一步实现文件
传输
的时候经常会发生文件传了出去,但接收方收不到,即生成的文件
大小
为0字节。这是因为接收的时候没有做好
判断
导致的。 主要
判断
模块如下所示: while ((length = s.read(buffer, 0, buffer.length)) >
Java EE
67,513
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章