Socket客户端上传文件

本文详细介绍了如何使用Java实现Socket服务器端与客户端之间的文件读取与保存操作,包括初始化服务器端、读取文件到内存、按需写入本地文件等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package cc12;

//服务器端

import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.io.*;
/** * 
 * Socketserver客户端读取文件并保存本文件
 * 
 *  *  * */
public class ServerFFFFF { 
	private static  ServerSocket ss = null;
	private static Socket s = null;
	private static File f = null;
	private static RandomAccessFile fw = null; 
	public static void main(String[] args) {
		ServerFFFFF sk = new ServerFFFFF();
		sk.initServer(1234);
		sk.getFile();
		}
/**  
 * * 初始化服务器端  * @param port  *   
 *       服务器端要使用端口  
 *       */ 
	public void initServer(int port){ 
		try {  
			ss = new ServerSocket(port);
			s = ss.accept(); 
			} catch (IOException e) {  
				e.printStackTrace(); 
				}
			} 
	// SocketClient读取文件
	public void getFile() {
		byte[] b = new byte[1024];
		try {  
			//定义输入流
			s.getInputStream(); 
			InputStream in = s.getInputStream(); 
			DataInputStream dis = new DataInputStream(new BufferedInputStream(in));
			//创建要保存文件
			SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd_HHmmss");//设置日期格式
            String time=df.format(new Date());// new Date()为获取当前系统时间
            //time="ccc";
			f = new File("d:/he/"+File.separator+time+".txt");
			System.out.println(f);
			fw = new RandomAccessFile(f, "rw");
			int num = dis.read(b);
			while (num != -1) { 
				//向文件写入0~num字节  
				fw.write(b, 0, num);
				//跳num字节再写入文件 
				fw.skipBytes(num);
				//读取num字节 
				num = dis.read(b); 
				}   
			//关闭输入输流  
			dis.close();
			fw.close(); 
			} catch (IOException e) {
				e.printStackTrace(); 
				} 
			} 
	
	}

package cc12;

//客户端

import java.net.*;
import java.io.*;
/** * 
 * SocketServerSocketClient接受文件名文件发送SocketServer端保存
 * 
 *   *  *  */
public class ClientFFFFF { 
	private static File f = null;
	private static FileInputStream fis = null;
	private static DataOutputStream dout = null;
	private static Socket s = null;
	
	public static void main(String[] args) { 
		ClientFFFFF sc = new ClientFFFFF();
		sc.connectSocketServer(1234);
		sc.sendFile("d:/he/lizhi.txt");
} 
	/** 
	 * 
	 *  * 连接服务器端  *   * @param port  *  
	 *            要连接服务器SocketServer端口  
	 **/ 
	public void connectSocketServer(int port) { 
		try {  
			s = new Socket(InetAddress.getLocalHost(), port); 
			} catch (UnknownHostException e) { 
				e.printStackTrace();  
			} catch (IOException e) {  
				e.printStackTrace();
				} 
			} 
	// 发送文件 
	public void sendFile(String str) { 
		byte[] b = new byte[1024];
		f = new File(str); 
		try { 
			//数据输流  
			dout = new DataOutputStream(new BufferedOutputStream(s.getOutputStream())); 
			//文件读入流
			fis = new FileInputStream(f);
			int n = fis.read(b); 
			while (n != -1) {   
				//向网络写入数据   
				dout.write(b, 0, n); 
				dout.flush();  
				//再读取n字节  
				n = fis.read(b);  
				}   
			//关闭流 
			fis.close();
			dout.close();
			} catch (FileNotFoundException e) { 
				e.printStackTrace(); 
			} catch (IOException e) { 
				e.printStackTrace(); 
			} 
			}
	
			
		
	}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值