Java网络编程练习把本地的文件上传到服务器保存

1)文件上传到客户端步骤: 1.创建客户端socket对象,指定要连接的服务器的ip地址和端口号 2.客户端socket对象调用getOutputStream方法,获取客户端的字节输出流对象 3.创建文件字节输入流FilelnputStream对象,指定客户端本地文件。 4.通过字节数组读(客户端本地文件)和写(服务器端) 5.客户端socket对象调用getlnputStream方法,获取客户端的字节输入流对象 6.通过客户端的字节输入流对象调用read方法,读取服务器端发送回来的响应数据 7.关闭流,释放资源。 2)文件上传到服务端步骤: 1.创建服务器端ServerSocket对象,指定端口号 2.服务器端ServerSocket对象调用accept(0方法,获取连接到服务器端的客户端Socket对象 3.使用服务器端的客户端Socket对象调用getlnputstream方法,获取服务器端的字节输入流对象,来读取客户端发送过来的数据 4.创建文件字节输出流FileOutputStream对象,指定服务器端的目标文件 5.字节数组循环读(客户端发送过来的数据)和写(服务器端的目标文件) 6.服务器端ServerSocket对象调用getOutputStream方法,获取服务器端的字节输出流对象 7.服务器端的字节输出流对象调用write方法,给客户端发送响应数据 8.关闭流,释放资源

客户端

package com.m.demo6;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;

public class ClientSocket {
          
   

	public static void main(String[] args) throws IOException {
          
   
		Socket client=new Socket("127.0.0.1",9999);//创建客户端 本机ip地址,端口号随便输的
		
		///使用打印流包装 输出给服务器
	    PrintStream pos=new PrintStream(client.getOutputStream(),true);
		///客户端读取本地文件
		FileInputStream fis=new FileInputStream("F:\01.mp3");
//	    ///使用缓冲流读本地文件
		BufferedInputStream bis=new BufferedInputStream(fis);
		byte bytes[]=new byte[1024];
		int len;
		System.out.println("读取本地文件");
		while((len=bis.read(bytes))!=-1) {
          
   
			///客户端使用打印流输出给服务器
			System.out.println("发送客户端文件");
			pos.write(bytes,0,len);
		}
		client.shutdownOutput();//通知服务器,文件输入结束
		BufferedInputStream cbis=new BufferedInputStream(client.getInputStream());
		///使用缓冲区包装 读取服务器信息	
		len=cbis.read(bytes);
		System.out.println("服务器传来的信息:"+new String(bytes,0,len));
		pos.close();
		bis.close();
		cbis.close();
		client.close();
		

		

	}

}

服务端

package com.m.demo6;

import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerSocketTcp {
          
   

	public static void main(String[] args) throws IOException {
          
   
		System.out.println("等待客户端信息");
		//创建服务器对象
		ServerSocket server=new ServerSocket(9999);//指定和客户端一致的端口号
		Socket accept = server.accept();//使用accept 调用输入 输出方法
		///服务器接受客户端信息 使用缓冲区包装
		BufferedInputStream bis=new BufferedInputStream(accept.getInputStream());
		///使用打印流 存入本地 并发送信息给客户端
		PrintStream aps=new PrintStream(accept.getOutputStream(),true);
		PrintStream ps=new PrintStream(new FileOutputStream("copy.mp3"),true);
		byte bytes[]=new byte[1024];
		int len;
		while((len=bis.read(bytes))!=-1) {
          
   
			ps.write(bytes,0,len);
			
		}
		
		aps.print("收到文件,并存入服务器");
		
		
		ps.close();
		aps.close();
		bis.close();
		accept.close();
		server.close();
		
		

	}

}
经验分享 程序员 微信小程序 职场和发展