A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© woshiku 中级黑马   /  2015-9-14 14:39  /  321 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package com.testtcp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerSocketDemoTwo {
        static class DealSockets implements Runnable{
                private Socket s;
                private int count = 1;
                public DealSockets(Socket s){
                        this.s = s;
                }
                @Override
                public void run() {
                        // TODO Auto-generated method stub
                        System.out.println("server conntected..."+s.getInetAddress().getHostAddress());
                        try {
                                InputStream input = s.getInputStream();
                                OutputStream output = s.getOutputStream();
                                BufferedReader fis = new BufferedReader(new InputStreamReader(input));
                                BufferedWriter fos = new BufferedWriter(new OutputStreamWriter(output));
                                String line = fis.readLine();
                                String fileName;
                                //读取文件名
                                if(line!=null){
                                        fileName = line;
                                        fos.write("rece");
                                        fos.newLine();
                                        fos.flush();
                                        File f = new File(fileName);
                                        while(f.exists()){
                                                f = new File("(重复"+count+++")"+fileName);
                                        }
                                        //开始接受文件
                                        FileOutputStream fileOut = new FileOutputStream(f.getName());
                                        byte []buf = new byte[1024];
                                        int len;
                                        while((len=input.read(buf))!=-1){
                                                fileOut.write(buf, 0, len);
                                        }
                                        fos.write("文件写完成!");
                                        fos.newLine();
                                        fos.flush();
                                        //文件写结束
                                        fileOut.close();
                                        fos.close();
                                        s.close();
                                }
                        } catch (IOException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }
                }
        }
        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                ServerSocket ss;
                try {
                        ss = new ServerSocket(10000);
                        System.out.println("server wait............");
                        while(true){
                                Socket s = ss.accept();
                                new Thread(new DealSockets(s)).start();
                        }
                } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                }
               
        }

}
package com.testtcp;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.net.UnknownHostException;
/*
* 多个客户端给服务器发送文件,服务器接并保存
*/

public class SocketDemoTwo {
        /**
         * @param args
         */
        public static void main(String[] args) {
                // TODO Auto-generated method stub
                Socket s =null;
                try {
                        s = new Socket("127.0.0.1",10000);
                        InputStream input = s.getInputStream();
                        OutputStream output = s.getOutputStream();
                        //发送文件名
                        BufferedWriter fos = new BufferedWriter(new OutputStreamWriter(output));
                        BufferedReader fis = new BufferedReader(new InputStreamReader(input));
                        //"c:\\puke\\nazi.jpg"
                        File file = new File("F:\\视频\\dy\\乌龙派出所(高清)\\乌龙派出所-第31集.mp4");
                       
                        if(file.exists()){
                                fos.write(file.getName());
                                fos.newLine();
                                fos.flush();
                                String line = null;
                                if((line=fis.readLine())!=null){
                                        //收到服务端的消息,如果正确,发送文件
                                        if(line.equals("rece")){
                                                FileInputStream fileInput = new FileInputStream(file);
                                                byte []buf = new byte[1024];
                                                int len;
                                                while((len=fileInput.read(buf))!=-1){
                                                        //发送数据
                                                        output.write(buf, 0, len);
                                                }
                                                //关闭写入流
                                                fileInput.close();
                                                //关闭输出流
                                                s.shutdownOutput();
                                                String info = fis.readLine();
                                                //发送完成
                                                if(!info.equals(null)){
                                                        System.out.println(info);
                                                }
                                                //关闭输出流
                                                s.close();
                                        }
                                }
                               
                        }
                       
                } catch (UnknownHostException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
               
        }
}



1 个回复

倒序浏览
您需要登录后才可以回帖 登录 | 加入黑马