黑马程序员技术交流社区
标题:
网络编程问题 高手进
[打印本页]
作者:
应佳锋
时间:
2012-4-8 10:17
标题:
网络编程问题 高手进
public static void main(String[] args) {
try {
Socket s=new Socket("192.168.1.102",10003);
java.io.OutputStream os= s.getOutputStream();
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("D:\\ssh\\artifacts.xml"));
System.out.println(bis.available());
byte[] b=new byte[bis.available()];
int count= bis.read(b);
System.out.println("把数据存储到数组完毕"+count);
os.write(b);
s.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
以上为客户机 发送文件过去
try {
ServerSocket ss=new ServerSocket(10003);
Socket s= ss.accept();
InputStream is= s.getInputStream();
System.out.println(is.available());//这里无法得到文件的大小有时候发送字符串的时候 偶尔能接收到长度 有时候也接受不到
byte[] b=new byte[55555];
int a= is.read(b);
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("d:/bb.XML"));
System.out.println(a);
bos.write(b);
bos.close();
ss.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
以上为客户端
问题1:发送的数据服务端的is.available()方法为什么有时候接受不到发送的数据或者文件大小
问题2:为什么不能传输大文件 比如50M左右的文件
问题1:客户端
作者:
邓海涛
时间:
2012-4-8 10:22
is.avalilable()方法有时候接受不到发送数据的大小或者文件时因为,他根本就没有接受到数据,所以
System.out.println(bis.available());
不会有打印结果
作者:
曾晓文
时间:
2012-4-8 10:30
本帖最后由 曾晓文 于 2012-4-8 10:33 编辑
客户端没有把 bis中的 缓冲区数据刷到网络输出流去。
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("D:\\ssh\\artifacts.xml"));
System.out.println(bis.available());
byte[] b=new byte[bis.available()];
int count= bis.read(b);
System.out.println("把数据存储到数组完毕"+count);
os.write(b);
bis.flush();//此句可以不用写,因为下面的 bis.close(); 有刷新的功能。
bis.close();
os.close();
s.close();
作者:
曾晓文
时间:
2012-4-8 10:39
本帖最后由 曾晓文 于 2012-4-8 10:42 编辑
用tcp协议可以一次传输50M的数据,不过这样有点耗资源,你必须的申请一个50M的缓冲区来存这50M数据,存完再写到输出流(网络输出流)。available方法慎用,它会根据你传输的文件大小申请一个刚刚好的内存。如果文件过大,会把你的电脑,搞崩溃的。
作者:
应佳锋
时间:
2012-4-8 11:23
问题解决了 也理解了机制了
作者:
pray
时间:
2014-4-26 05:17
楼主的帖子,就好比黑暗中刺裂夜空的闪电,又好比撕开乌云的阳光,一瞬间就让我如饮甘露,让我明白了永恒的真理在这个世界上是真实存在着的。只有楼主这样长相秉异和有着完美男人气质的人,才能作为这真理的唯一引言者。看了楼主的帖子,让我陷入了严肃的思考中,我认为,如果不把楼主的帖子顶上去,就是对美丽的一种误解,就是对丑陋的极大妥协。因此,我决定义无返顾的顶了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2