图片上传功能模拟

注意:先启动服务器端,再启动客户端

 

 

客户端:


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class UploadImgClient {

	public static void main(String[] args) throws IOException {
		System.out.println("客户端上传数据!");
		//连接服务器利用Socket创建输出流
		Socket s=new Socket("192.168.51.179",10001);
		OutputStream os = s.getOutputStream();
		BufferedOutputStream bos=new BufferedOutputStream(os);
		
		//创建输入流读取文件
		FileInputStream fis=new FileInputStream(new File("C:\\Users\\刘备\\Desktop\\a.png"));
		BufferedInputStream bis=new BufferedInputStream(fis);
		
		//一边读取一边写到服务器
		byte [] by=new byte[1024];
		int len=0;
		while((len=bis.read(by))!=-1) {
			bos.write(by,0,len);
		}

		//关闭Socket输出流
		bos.flush();  //不刷新可能上传到服务器的图片会变小
		//该方法可以代替关流,并且与该流相关的os/dos都不用关。s.shutdownInput();没这功能
		s.shutdownOutput();
		
		//创建Socket输入流接收服务器反馈
		InputStream is = s.getInputStream();
		DataInputStream dis=new DataInputStream(is);
		System.out.println(dis.readUTF());
		
		//关流
		is.close();
		dis.close();
		bis.close();
		fis.close();
		s.close();
		
		
	}

}

服务器端:

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class UploadImgServer {

	public static void main(String[] args) throws IOException {
		System.out.println("服务器接收数据!");
		//连接客户端利用Socket创建输入流
		ServerSocket ss=new ServerSocket(10001);
		Socket s = ss.accept();
		InputStream is = s.getInputStream();
		BufferedInputStream dis=new BufferedInputStream(is);
		
		//创建输出流读取Scoket输入
		FileOutputStream fos=new FileOutputStream(new File("C:\\Users\\刘备\\Desktop\\b.png"));
		BufferedOutputStream bos=new BufferedOutputStream(fos);
		
		//Socket输入流一边读取,输出流一边写入文件
		byte [] by=new byte[1024];
		int len=0;
		while((len=dis.read(by))!=-1) {
			bos.write(by,0,len);
		}
		
			
		//关闭Socket输入流
		s.shutdownInput();
		
		//创建Socket输出流给予客户反馈
		OutputStream os = s.getOutputStream();
		DataOutputStream dos=new DataOutputStream(os);
		
		dos.writeUTF("服务器接收完毕!");
		
		//关流
		//该方法可以代替关流,并且与该流相关的os/dos都不用关。s.shutdownInput();没这功能
		s.shutdownOutput();
		bos.close();
		fos.close();
		s.close();
		ss.close();
	
		
	}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二百四十九先森

你的打赏是我努力的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值