求 java socket上传文件 限制带宽思路

shayebuhui0 2013-11-14 01:37:09
使用socket 客户端向服务器端发送文件。限制一下上传的带宽。求大神给予思路。。。
...全文
778 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shayebuhui0 2013-11-14
  • 打赏
  • 举报
回复
引用 7 楼 AFer198215 的回复:
如果我没记错的话,传输速率应该是一段时间传输了多少字节算的吧。 如果是这样的话,那么传个包睡会 再传 来控制?
这个靠谱,我也这么想的,在while循环里面sleep一会,然后在写。
teemai 2013-11-14
  • 打赏
  • 举报
回复
引用 6 楼 yangqiu0928 的回复:
[quote=引用 5 楼 huxiweng 的回复:] [quote=引用 4 楼 yangqiu0928 的回复:] [quote=引用 3 楼 huxiweng 的回复:] 设置一个socket缓冲区

Socket s = new Socket("localhost",PORT);//创建socket连接

       s.getOutputStream().write(new byte[BUFFER_SIZE]);

       s.getOutputStream().flush();
这里加缓冲区有什么用??能讲解一下原理吗??[/quote] 每次写少点数据,减少每次带宽消耗[/quote] 那就是跟一楼的意思一样了!每次从本地的文件少读取一些数据,然后传递。

//读取本地文件byte
		byte[] buffer = new byte[1024];
		int len=0;
		while((len=fc.read(buff)) != -1){
			socket.getOutputStream().write(buffer);
		}
我现在是这样写的,您的仪式是把那个buffer控制小一点是吗?[/quote] 是的!
想喝咖啡的貓 2013-11-14
  • 打赏
  • 举报
回复
如果我没记错的话,传输速率应该是一段时间传输了多少字节算的吧。 如果是这样的话,那么传个包睡会 再传 来控制?
shayebuhui0 2013-11-14
  • 打赏
  • 举报
回复
引用 5 楼 huxiweng 的回复:
[quote=引用 4 楼 yangqiu0928 的回复:] [quote=引用 3 楼 huxiweng 的回复:] 设置一个socket缓冲区

Socket s = new Socket("localhost",PORT);//创建socket连接

       s.getOutputStream().write(new byte[BUFFER_SIZE]);

       s.getOutputStream().flush();
这里加缓冲区有什么用??能讲解一下原理吗??[/quote] 每次写少点数据,减少每次带宽消耗[/quote] 那就是跟一楼的意思一样了!每次从本地的文件少读取一些数据,然后传递。

//读取本地文件byte
		byte[] buffer = new byte[1024];
		int len=0;
		while((len=fc.read(buff)) != -1){
			socket.getOutputStream().write(buffer);
		}
我现在是这样写的,您的仪式是把那个buffer控制小一点是吗?
teemai 2013-11-14
  • 打赏
  • 举报
回复
引用 4 楼 yangqiu0928 的回复:
[quote=引用 3 楼 huxiweng 的回复:] 设置一个socket缓冲区

Socket s = new Socket("localhost",PORT);//创建socket连接

       s.getOutputStream().write(new byte[BUFFER_SIZE]);

       s.getOutputStream().flush();
这里加缓冲区有什么用??能讲解一下原理吗??[/quote] 每次写少点数据,减少每次带宽消耗
shayebuhui0 2013-11-14
  • 打赏
  • 举报
回复
引用 3 楼 huxiweng 的回复:
设置一个socket缓冲区

Socket s = new Socket("localhost",PORT);//创建socket连接

       s.getOutputStream().write(new byte[BUFFER_SIZE]);

       s.getOutputStream().flush();
这里加缓冲区有什么用??能讲解一下原理吗??
teemai 2013-11-14
  • 打赏
  • 举报
回复
设置一个socket缓冲区

Socket s = new Socket("localhost",PORT);//创建socket连接

       s.getOutputStream().write(new byte[BUFFER_SIZE]);

       s.getOutputStream().flush();
shayebuhui0 2013-11-14
  • 打赏
  • 举报
回复
引用 1 楼 lwb314 的回复:
你用Buffer每次读文件的一部分,然后发出去,然后你把buffer的大小控制的小一点,是不是能达到你说的效果
控制buffer的大小,只不过是控制每次读取文件到缓冲区的文件小一点而已,达不到控制带宽的效果。。。
  • 打赏
  • 举报
回复
你用Buffer每次读文件的一部分,然后发出去,然后你把buffer的大小控制的小一点,是不是能达到你说的效果

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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