JAVA网络编程10---TCPdemo1客户端上传图片文件,服务器接收这个文件(复制)

这个程序有一个缺陷就是我没有办法给出反馈,不知道怎么回事,修改一点点东西就会导致图片文件上传的时候只上传了一部分

//客户端代码

/*
读取一个图片数据
客户端读取文件的数据 把数据发送给服务器 并接收服务器的反馈

*/

public static void main(String[] args) throws IOException {

//创建客户端的socket对象
Socket socket = new Socket("192.168.0.109",10086);

//创建文件的读取流 创建字节缓冲流对象
//创建字符输入流对象
FileInputStream isr = new FileInputStream("C:\\Users\\Administrator\\IdeaProjects\\Day08_thread" +
"\\MyInternet\\src\\TCPdemo5\\baidu.png");

//封装字节输入流 转化为字节缓冲输入流
BufferedInputStream bis =new BufferedInputStream(isr);

//创建socket的输出流 用于发送数据给客户端
OutputStream socket_outstream = socket.getOutputStream();
//封装为字节缓冲输入流
BufferedOutputStream bos = new BufferedOutputStream(socket_outstream);

//开始读取数据 一次读取一个字节
byte by[] = new byte[1024];
int len ;
while ( (len = bis.read(by)) != -1){

//写数据
bos.write(by,0,len);

}

System.out.println(11111);


//释放资源
isr.close();
bos.close();
socket.close();
//这里我们要把socket放在bos后面 不然就会报错
// 更加奇怪的就是 如果你把bos给删除了,不释放这个资源文件就没有复制过去


}

服务端代码


/*
接收客户端发送过来的数据
写入文件
没有办法给出反馈
*/

public static void main(String[] args) throws IOException {

//创建服务端的socket对象
ServerSocket ss = new ServerSocket(10086);

//监听客户端的连接
Socket socket = ss.accept();

//创建socket的字节输入流 并封装
InputStream is = socket.getInputStream();
//封装为字节缓冲流
BufferedInputStream bis = new BufferedInputStream(is);

//创建字节输出流 用于把数据写入文件 OutputStream 是抽象类用它的子类FileOutputStream
FileOutputStream fos = new FileOutputStream("C:\\Users\\Administrator\\IdeaProjects\\Day08_thread" +
"\\MyInternet\\src\\TCPdemo5\\copybaidu.png");
//封装输出流 为字节缓冲输出流
BufferedOutputStream bos = new BufferedOutputStream(fos);



//开始读取数据 一次读取一个字节数组
byte by[] = new byte[1024];
int len ;
while ((len = bis.read(by)) != -1){

//开始向文件写入数据
bos.write(by,0,len);

}

System.out.println(2222222);

//释放资源
ss.close();
bis.close();
bos.close();




}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值