网络编程练习

public class test1_server {
    /*
     * 网络编程(练习)
     * 客户端向服务器写字符串(键盘录入),服务器(多线程)将字符串反转后写回,客户端再次读取到是反转后的字符串
     */
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(54321);
        System.out.println("服务器启动,绑定端口");
        
        while (true) {
            final Socket socket = server.accept();
            new Thread(){
                public void run() {
                    try {
                        BufferedReader br = 
                                new BufferedReader(new InputStreamReader(socket.getInputStream()));
                        PrintStream ps = new PrintStream(socket.getOutputStream());
                        String line = br.readLine();
                        line = new StringBuilder(line).reverse().toString();   //字符串反转  链式编程
                        ps.println(line);
                        socket.close();
                    } catch (IOException e) {
                        
                        e.printStackTrace();
                    }    
                }
                
            }.start();
        }
    }

}
public class test1_client {
    /*
     * 网络编程(练习)
     * 客户端向服务器写字符串(键盘录入),服务器(多线程)将字符串反转后写回,客户端再次读取到是反转后的字符串
     */
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        Socket socket = new Socket("localhost", 54321);
        
        BufferedReader br = 
                new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintStream ps = new PrintStream(socket.getOutputStream());
    
        ps.println(sc.nextLine());
        System.out.println(br.readLine());
        socket.close();    
    }

}
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class test2_server {

    public static void main(String[] args) throws Exception {        
        ServerSocket server = new ServerSocket(12333);
        
        System.out.println("服务器启动");
        
        while (true) {
            final Socket socket = server.accept();
            new Thread(){
                public void run() {
                    try {
                        InputStream is = socket.getInputStream();
                        BufferedReader br = 
                                new BufferedReader(new InputStreamReader(is));
                        PrintStream ps = new PrintStream(socket.getOutputStream());
                        
                        String fileName = br.readLine();   // 读取文件名
                        File dir = new File("update");
                        dir.mkdir();   // 创建文件夹
                        File file = new File(dir, fileName);  // 父及目录   filename
                        if (file.exists()) {
                            ps.println("存在");
                            socket.close();
                            return;
                        } else {
                            ps.println("不存在");
                        }
                        FileOutputStream fos = new FileOutputStream(file);
                        byte[] arr =new byte[8192];
                        int len;
                        while ((len = is.read(arr))!= -1) {
                            fos.write(arr, 0, len);
                        }
                        fos.close();
                        socket.close();
                        
                    } catch (IOException e) {
                        
                        e.printStackTrace();
                    }
                }
                
            }.start();
            
        }
    }
}
public class test2_client {

    public static void main(String[] args) throws Exception {
        File file = getFile();
        Socket socket = new Socket("localhost",12333);
        
        BufferedReader br = 
                new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintStream ps = new PrintStream(socket.getOutputStream());
        
        ps.println(file.getName());   // 将文件名发送给服务器
        String result = br.readLine();
        if ("存在".equals(result)) {
            System.out.println("您上传的文件已存在!请不要重复上传");
            socket.close();
            return;
        } else {
            FileInputStream fis = new FileInputStream(file);
            byte[] arr = new byte[8192];
            int len;
            while ((len =fis.read(arr)) != -1) {
                ps.write(arr,0,len);
            }
            fis.close();
            socket.close();
        }
    }

    private static File getFile() {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个文件路径:");
        
        while (true) {
            String line = sc.nextLine();
            File file = new File(line);
            
            if (file.exists()) {
                if (file.isDirectory()) {
                    System.out.println("你输入的是文件夹,请重新输入");
                } else {
                    return file;
                }
            }else {
                System.out.println("你输入的文件路径不存在,请重新输入");
            }
        }
    }

}