TCP之上传文本与图片
来源:互联网 发布:淘宝通过 拍摄脸部 编辑:程序博客网 时间:2024/06/08 05:17
//将代码写出来吧!!!!
/*上传文本文件。原理:其实就是将本地的文件数据通过socket流,发送到了服务端。服务端对这些数据进行文件存储*/import java.io.*;import java.net.*;class UploadClient{public static void main(String[] args)throws Exception {Socket s =new Socket("192.168.1.253",9005);//读取要上传的本地文本文件,为了提高效率,使用了缓冲区。BufferedReader bufr = new BufferedReader(new FileReader("UdpDemo.java"));PrintWriter out = new PrintWriter(s.getOutputStream(),true);String line = null;while((line=bufr.readLine())!=null){out.println(line.toUpperCase());}//out.println("");s.shutdownOutput();//读取服务端发挥的上传成功信息。BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));String info = bufIn.readLine();System.out.println(info);bufr.close();s.close();}}class UploadServer{public static void main(String[] args) throws Exception{ServerSocket ss = new ServerSocket(9005);Socket s = ss.accept();String ip = s.getInetAddress().getHostAddress();System.out.println(ip+"....connected");BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));PrintWriter pw = new PrintWriter(new FileWriter("server.txt"),true);String line = null;while((line=bufIn.readLine())!=null){//if("over".equals(line))//break;pw.println(line);}PrintWriter out =new PrintWriter(s.getOutputStream(),true);out.println("上传成功---");pw.close();s.close();ss.close();}}//首先写了一个发送端:package com.csdn.File;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 JpgSend {/** * @param args */public static void main(String[] args) throws Exception{// TODO Auto-generated method stubif(args.length==0){System.out.println("请输入一个jpg图片");return;}File f= new File(args[0]);if(!(f.exists() && f.isFile() && f.getName().endsWith(".jpg"))){System.out.println("选择文件错误,请重输");return;} Socket s=new Socket("192.168.49.110",9009); FileInputStream fis = new FileInputStream(f); OutputStream output =s.getOutputStream(); byte[] b=new byte[1024]; int len=0; while((len=fis.read(b))!=-1){ output.write(b,0,len); } s.shutdownOutput(); InputStream input = s.getInputStream(); byte[] bt= new byte[1024]; int num=input.read(bt); String str=new String(bt,0,num); System.out.println(str); fis.close(); s.close();}}//做一个线程,接收文件package com.csdn.File;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.Socket;public class JpgThread implements Runnable{ private Socket s; public JpgThread(Socket s){ this.s=s; } @Overridepublic void run() {// TODO Auto-generated method stub int count=1; String ip =s.getInetAddress().getHostAddress(); try{ InputStream input =s.getInputStream(); File f=new File("d:\\"+"("+count+").jpg"); while(f.exists()){ f=new File("d:\\"+"("+(count++)+").jpg"); } FileOutputStream fos=new FileOutputStream(f); byte[] b=new byte[1024]; int len=0; while((len=input.read(b))!=-1){ fos.write(b,0,len); } OutputStream out=s.getOutputStream(); out.write("接收成功".getBytes()); fos.close(); s.close(); }catch(Exception e){ System.out.println(e.toString()); } }}调用线程:package com.csdn.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.net.ServerSocket;import java.net.Socket;public class JpgReceive {/** * @param args */public static void main(String[] args) throws Exception {// TODO Auto-generated method stub ServerSocket ss=new ServerSocket(9009); while(true){ Socket s=ss.accept(); String ip=ss.getInetAddress().getHostAddress(); System.out.println(ip+">>正在发送>>"); new Thread(new JpgThread(s)).start(); }}}