⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverthread.java

📁 Java编程技巧
💻 JAVA
字号:

import java.net.*;
import java.io.*;
import javax.swing.*;
/** 执行访问本地文件系统的服务器进程。
 */
public class ServerThread extends Thread {
    	/** 与当前进程所对应的服务器端Socket。
     	*/    
        private Socket socket=null;        
        /** 区分当前客户的请求:加载或存储。
         */
	private int mode=0;
        /**
	  *存贮当前对话框所对应的目录(当前目录)
         */
        private static String path=null;
	/**
         * @param s 与当前进程所对应的服务器端Socket。
         */        
        public ServerThread(Socket s) {
            socket=s;	    
        }        
        
        public void run() {
            super.run();            
            try{
                int time=socket.getInputStream().read();
                if(time==PhoneSimulator.initialAdd){
			ServerThread.path= new BufferedReader(
                        	new InputStreamReader(socket.getInputStream())).readLine();
	                      //  得到对话框的当前目录                
		}                
		mode=socket.getInputStream().read();//从客户端读出用户的请求:读还是存盘
            }
            catch(IOException e){
                System.err.println(e.getMessage());
            }
            //System.out.println("path received: "+path);
	    JFileChooser fileChooser= new JFileChooser(ServerThread.path);
            if(mode==PhoneSimulator.savePhoneAdd){//客户端想存盘
                fileChooser.setDialogTitle("保存地址簿");
                int returnValue=fileChooser.showSaveDialog(null);
                if(returnValue==JFileChooser.APPROVE_OPTION){//同意存盘
                    try{
                    ServerThread.path=fileChooser.getCurrentDirectory().getPath();
                    //  更新路径
		    socket.getOutputStream().write(PhoneAddServer.Approved_Operation);
                    //向客户端确认用户已经选了存盘                    
                    String inLine;
                    BufferedReader in=new BufferedReader(
                        new InputStreamReader(socket.getInputStream()));
                    BufferedWriter out=new BufferedWriter(
                        new FileWriter(fileChooser.getSelectedFile()));
                    while((inLine=in.readLine())!=null){
                        System.out.println(inLine);
                        out.write(inLine);
                        out.newLine();
                    }
                    out.flush();
                    out.close();
                    in.close();
                    socket.close();
                    }                    
                    catch (IOException e) {
                    e.printStackTrace();
                    }
                }
                else{//用户选了cancel拒绝存盘
                    try{
                        socket.getOutputStream().write(PhoneAddServer.Cancel_Operation);
                    }
                    catch(IOException e){
                        System.err.println(e.getMessage());
                    }
                    }
            }
            else{//用户想读盘
                fileChooser.setDialogTitle("加载地址簿");
                int returnValue=fileChooser.showOpenDialog(null); 
                if(returnValue==JFileChooser.APPROVE_OPTION){//同意读盘                    
                    try{
                    ServerThread.path=fileChooser.getCurrentDirectory().getPath();
                    //  更新路径
		    socket.getOutputStream().write(PhoneAddServer.Approved_Operation);
                    //向客户端确认用户已经选了读盘
                    String inLine;
                    BufferedReader in=new BufferedReader(
                        new FileReader(fileChooser.getSelectedFile()));//从文件中读出来
                    BufferedWriter out=new BufferedWriter(
                        new OutputStreamWriter(socket.getOutputStream()));//写入客户端
                    while((inLine=in.readLine())!=null){
                        System.out.println(inLine);
                        out.write(inLine);
                        out.newLine();
                    }
                    out.flush();
                    out.close();
                    in.close();
                    socket.close();
                    }                    
                    catch (IOException e) {
                    e.printStackTrace();
                    }
                }
                else{//用户选了cancel拒绝读盘
                     try{
                        socket.getOutputStream().write(PhoneAddServer.Cancel_Operation);
                    }
                    catch(IOException e){
                        System.err.println(e.getMessage());
                    }
                    }
            }
        }
    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -