第二十五天

代码实现

客户端发送文件给服务端,服务端将文件保存在本地
在这里插入图片描述

实现步骤:

*1.创建一个本地字节收入流FileInputStream对象构造方法中绑定读取的数据源
*2.二创建一个socket对象构造方法中绑定服务器的IP地址和端口号
*3.使用socket中的方法,getOutputStream获取网络字节输出流
*4.使用本地字节输入流中的read方法,读取本地文件
*5.使用网络输出流中的write方法,把读取到的文件上传到服务器
*6.使用socket中方法获取输入流对象
*7.通过网络输入流对象中的read反复读取回写数据
*8.释放资源

代码及成果展示

demo01

package demo01FileUpload;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

/*
 *实现步骤:
 *1.创建一个本地字节收入流FileInputStream对象构造方法中绑定读取的数据源
 *2.二创建一个socket对象构造方法中绑定服务器的IP地址和端口号
 *3.使用socket中的方法,getOutputStream获取网络字节输出流
 *4.使用本地字节输入流中的read方法,读取本地文件
 *5.使用网络输出流中的write方法,把读取到的文件上传到服务器
 *6.使用socket中方法获取输入流对象
 *7.通过网络输入流对象中的read反复读取回写数据
 *8.释放资源
 * */
public class TcpClient {
	public static void main(String[] args) throws IOException {
		FileInputStream fis=new FileInputStream("D:\\xiaojava\\3.jpg");
		Socket socket=new Socket("127.0.0.1",6666);
		OutputStream  os=socket.getOutputStream();
		int len=0;
		byte[] bytes=new byte[1024];
		while((len=fis.read(bytes))!=-1) {
			os.write(bytes,0,len);
		}
		//告诉服务器,文件已经发送完毕
		socket.shutdownInput();
		InputStream  is=socket.getInputStream();
		while((len=is.read(bytes))!=-1) {
			System.out.println(new String(bytes,0,len));
			
		}
		fis.close();
		socket.close();
	}

}
package demo01FileUpload;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

public class TcpServer {
	public static void main(String[] args) throws IOException {
		//1.创建一个服务器的serversocket对象
		ServerSocket server=new ServerSocket(6666);
		//2.等待客户端连接
		Socket socket=server.accept();
		//3.获取输入流
		InputStream is=socket.getInputStream();
		//
		File file=new File("D:\\xiaojava\\2021");
		if(!file.exists()) {
			file.mkdirs();
		}
		String FileName="classFive"+System.currentTimeMillis()+new Random().nextInt(99999)+".bmp";
		FileOutputStream fos=new FileOutputStream(file+"\\1.jpg");
		int len=0;
		byte[] bytes=new byte[1024];
		while((len=is.read(bytes))!=-1) {
		    fos.write(bytes,0,len);
		}
		socket.getOutputStream().write("图片上传成功".getBytes());
		fos.close();
		socket.close();
		server.close();
	}

}

demo02

package demo02FileUpload;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

/*
 *实现步骤:
 *1.创建一个本地字节收入流FileInputStream对象构造方法中绑定读取的数据源
 *2.二创建一个socket对象构造方法中绑定服务器的IP地址和端口号
 *3.使用socket中的方法,getOutputStream获取网络字节输出流
 *4.使用本地字节输入流中的read方法,读取本地文件
 *5.使用网络输出流中的write方法,把读取到的文件上传到服务器
 *6.使用socket中方法获取输入流对象
 *7.通过网络输入流对象中的read反复读取回写数据
 *8.释放资源
 * */
public class TcpClient {
	public static void main(String[] args) throws IOException {
		FileInputStream fis=new FileInputStream("D:\\xiaojava\\3.jpg");
		Socket socket=new Socket("127.0.0.1",6666);
		OutputStream  os=socket.getOutputStream();
		int len=0;
		byte[] bytes=new byte[1024];
		while((len=fis.read(bytes))!=-1) {
			os.write(bytes,0,len);
		}
		//告诉服务器,文件已经发送完毕
		socket.shutdownInput();
		InputStream  is=socket.getInputStream();
		while((len=is.read(bytes))!=-1) {
			System.out.println(new String(bytes,0,len));
			
		}
		fis.close();
		socket.close();
	}

}
package demo02FileUpload;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

public class TcpServer {
	public static void main(String[] args) throws IOException {
		//1.创建一个服务器的serversocket对象
		ServerSocket server=new ServerSocket(6666);
		while(true) {
			Socket socket=server.accept();
			new Thread(new Runnable() {
				public void run() {
					try {//3.获取输入流
						InputStream is=socket.getInputStream();
						//4.准备数据存放位置
						File file=new File("D:\\xiaojava\\2021");
						if(!file.exists()) {
							file.mkdirs();
						}
						String FileName="classFive"+System.currentTimeMillis()+new Random().nextInt(99999)+".bmp";
						FileOutputStream fos=new FileOutputStream(file+"\\jpg");
						int len=0;
						byte[] bytes=new byte[1024];
						while((len=is.read(bytes))!=-1) {
						    fos.write(bytes,0,len);
						}
						socket.getOutputStream().write("图片上传成功".getBytes());
						fos.close();
						socket.close();
						server.close();
			}catch(IOException e) {
				System.out.println(e);
			}
				}
			}).start();
		}
	}
}

demo03

package Demo03Bs;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

public class TcpServer {
	public static void main(String[] args) throws IOException {
		//1.创建一个服务器的serversocket对象
		ServerSocket server=new ServerSocket(9111);
		while(true) {
			Socket socket=server.accept();
			new Thread(new Runnable() {
				public void run() {
					try {//3.获取输入流
						InputStream is=socket.getInputStream();
						//4.准备数据存放位置
						File file=new File("D:\\xiaojava\\2021");
						if(!file.exists()) {
							file.mkdirs();
						}
						String FileName="classFive"+System.currentTimeMillis()+new Random().nextInt(99999)+".bmp";
						FileOutputStream fos=new FileOutputStream(file+"\\1.bmp");
						int len=0;
						byte[] bytes=new byte[1024];
						while((len=is.read(bytes))!=-1) {
						    fos.write(bytes,0,len);
						}
						socket.getOutputStream().write("图片上传成功".getBytes());
						fos.close();
						socket.close();
						server.close();
			}catch(IOException e) {
				System.out.println(e);
			}
				}
			}).start();
		}
	}
}
package Demo03Bs;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServerThread {
	public static void main(String[] args) throws IOException {
		ServerSocket server=new ServerSocket(9876);
		Socket socket=server.accept();
		InputStream  is=socket.getInputStream();
		byte[] bytes=new byte[1024];
		int len=0;
		BufferedReader br=new BufferedReader(new InputStreamReader(is));
		String line =br.readLine();
		System.out.println(line);
		String[] arr=line.split(" ");
		String htmlpath=arr[1];
		FileInputStream fis=new FileInputStream(System.getProperty("user.dir")+htmlpath);
		OutputStream  os=socket.getOutputStream();
		os.write("HTTP/1.1 200 OK\r\n".getBytes());
		os.write("Content-Type:text/html\r\n".getBytes());
		//必须要写入空行,否则浏览器不解析
		os.write("\r\n".getBytes());
		while((len=fis.read(bytes))!=-1) {
			os.write(bytes,0,len);
		}
		fis.close();
		socket.close();
		server.close();
	}
}

在这里插入图片描述
在这里插入图片描述

2020080605045 袁雪华 大数据2005

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值