基于Tcp上传文件

import java.io.*;
import java.net.*;
import java.lang.*;

public class PicLoadTestCZ{}

/*
	实现多用户的图片上传。。

*/

class Client{
	public static void main(String []args)throws Exception{
		
		while(args.length>1){
			System.out.println("输入的有误。。");
			return ;
		}
		String filename=args[0];

		File file=new File(filename);

		while(!file.exists()){
			System.out.println("文件不存在。。");
			return ;
		}
		while(file.length()>(1024*1024*3)){
			System.out.println("文件太大。。");
			return;
		}
		while(!file.getName().endsWith(".gif")){
			System.out.println("文件格式不对,。。。");
			return;
		}
		Socket s=new Socket("127.0.0.1",10009);

		OutputStream out=s.getOutputStream();
		FileInputStream filein=new FileInputStream(file);//将文件与流关联

		byte buf[]=new byte[1024];
		int len=0;
		while((len=filein.read(buf))!=-1){
		
			out.write(buf,0,len);
			//System.out.println("传一个字节");
		}
		s.shutdownOutput();

		InputStream in=s.getInputStream();
		byte []buts=new byte[1024];
		int len1=0;
		len=in.read(buf);
		String str=new String(buf,0,len);
		System.out.println(str);
		
		filein.close();
	}

}

class PicLoad implements Runnable{
	
	private Socket s;
	public PicLoad(Socket s){
		this.s=s;
	}

	public void run(){
		try{
			InputStream in=s.getInputStream();

			FileOutputStream fileout=null;
				
			String ip=s.getInetAddress().getHostAddress();
			
			File file=new File("e:\\"+ip+".bmp");
			int count=1;
			while(file.exists())
					file=new File("e:\\"+ip+"("+(count++)+").bmp");
	
			
				fileout=new FileOutputStream(file);
			byte buf[]=new byte[1024];

			int len=0;

			
			while((len=in.read(buf))!=-1){
				
				fileout.write(buf,0,len);
			}
			OutputStream out=s.getOutputStream();
			out.write("上传成功。。。".getBytes());
			out.close();
			fileout.close();
		}catch(Exception e){
			e.toString();
		}
		
	}

}
class Server{
	public static void main(String []args)throws Exception{
		ServerSocket ss=new ServerSocket(10009);
	while(true){
		Socket s=ss.accept();
		new Thread(new PicLoad(s)).start();
	}

	}
}


文件上传的原理也是如此。。。从客户端上传到服务器。。。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值