eclipse中Client/Server程序生成exe

先建两个Java Project项目,一个写Client,一个写Server端程序,程序大致为一个Server端建立监听某个port。多个Client端能够连接,实现例如以下:

1.      Server端

importjava.io.*; 

importjava.net.*; 

importjava.util.*; 

 

publicclass SimpleChatServer { 

    ArrayList<PrintWriter>clientOutputStreams; 

    public static void main(String[]args){ 

        new SimpleChatServer().go(); 

    } 

   public class ClientHandler implementsRunnable{ 

        BufferedReader reader; 

        Socket sock; 

        public ClientHandler(SocketclientSocket){ 

            try{ 

                sock = clientSocket; 

                InputStreamReader isReader =new InputStreamReader(sock.getInputStream()); 

                reader = newBufferedReader(isReader); 

            }catch(Exception ex){ 

                ex.printStackTrace(); 

            } 

        } 

        public void run() { 

            String message; 

            try{ 

                while((message =reader.readLine()) != null){ 

                   System.out.println("read " + message); 

                    tellEveryone(message); 

                } 

            }catch(Exception ex){ 

                ex.printStackTrace(); 

            } 

        } 

    } 

     

    public void tellEveryone(Stringmessage){ 

        Iterator<PrintWriter> it =clientOutputStreams.iterator(); 

        while(it.hasNext()){ 

            try{ 

                PrintWriter writer =(PrintWriter)it.next(); 

                writer.println(message); 

                writer.flush(); 

            }catch(Exception ex){ 

                ex.printStackTrace(); 

            } 

        } 

    } 

  public void go(){ 

        clientOutputStreams = newArrayList<PrintWriter>(); 

        try{ 

            ServerSocket serverSock = newServerSocket(2310); 

            while(true){ 

                Socket clientSocket =serverSock.accept(); 

                PrintWriter writer = newPrintWriter(clientSocket.getOutputStream()); 

               clientOutputStreams.add(writer);  

                Thread t = new Thread(newClientHandler(clientSocket)); 

                t.start(); 

                System.out.println("got aconnection"); 

            } 

        }catch(Exception ex){ 

            ex.printStackTrace(); 

        } 

    } 

}

2.      Client端

importjava.io.*; 

importjava.net.*; 

importjavax.swing.*; 

importjava.awt.*; 

importjava.awt.event.*; 

importjavax.swing.JOptionPane; 

 

publicclass SimpleChatClient { 

    JTextArea incoming; 

    JTextField outgoing;  

    BufferedReader reader; 

    PrintWriter writer; 

    Socket sock; 

    static String clientName; 

 

    public static void main(String[] args){ 

        SimpleChatClient client = newSimpleChatClient(); 

        clientName = JOptionPane.showInputDialog("Pleaseinput the client name :"); 

        client.go(); 

    } 

 

    public void go() { 

        // build GUI 

        JFrame frame = new JFrame(clientName +"'s Chat Client"); 

        JPanel mainPanel = new JPanel(); 

        incoming = new JTextArea(15,20);   

        incoming.setLineWrap(true); 

        incoming.setWrapStyleWord(true); 

        incoming.setEditable(false); 

 

        JScrollPane qScroller = newJScrollPane(incoming); 

        qScroller.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); 

       qScroller.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); 

 

        outgoing = new JTextField(20); 

 

        JButton sendButton = newJButton("Send"); 

        sendButton.addActionListener(newSendButtonListener()); 

 

        mainPanel.add(qScroller); 

        mainPanel.add(outgoing); 

        mainPanel.add(sendButton); 

 

        setUpNetworking(); 

        Thread readerThread = new Thread(newIncomingReader()); 

        readerThread.start(); 

 

       frame.getContentPane().add(BorderLayout.CENTER, mainPanel); 

        frame.setSize(400,500); 

        frame.setVisible(true); 

 

    } // close go 

 

    private void setUpNetworking() {  

        try { 

            sock = newSocket("127.0.0.1", 2310); 

            InputStreamReader streamReader =new InputStreamReader(sock.getInputStream()); 

            reader = newBufferedReader(streamReader);  

 

            writer = newPrintWriter(sock.getOutputStream()); 

 

            System.out.println("networkingestablished"); 

        } catch(IOException ex) { 

            ex.printStackTrace(); 

        } 

    } // close setUpNetworking   

 

    public class SendButtonListener implementsActionListener { 

        public void actionPerformed(ActionEventev) { 

            try { 

               writer.println(clientName+" says: "+outgoing.getText()); 

                writer.flush(); 

            } catch(Exception ex) { 

                ex.printStackTrace(); 

            } 

           outgoing.setText(""); 

            outgoing.requestFocus(); 

        } 

    }  //close SendButtonListener inner class 

 

    public class IncomingReader implementsRunnable { 

        public void run() { 

            String message = null;             

            try { 

                while ((message =reader.readLine()) != null) {                        

                   System.out.println("read " + message); 

                    incoming.append(message +" "); 

                } // close while 

            } catch(Exception ex){ex.printStackTrace();} 

        } // close run 

    } // close inner class     

}

以下以Server端生成exe为例进行解说:

1.导出jar文件

选中你的项目---然后右击弹出选项列表---选择Export---Java---jarfile---next---browser(选择jar的存放路径)---next---next(无论太多继续下一步)---browser(选择你程序的主类--OK)---finish

2.安装exe4j

利用exe4j这个软件转换jar文件为exe文件,exe4j下载地址:http://www.ej-technologies.com/download/exe4j/files.html.

3.exe4j安装完毕后

1.执行后直接点Next. 

2.选择第二项“JAR in EXE mode”,之后点击Next. 

3.在General---Short name of your application框中输入你的应用程序的名字(随便就可以),在Directories---Outputdirectory框中输入生成exe后的保存路径,然后Next. 

4.在Excutable name框中输入将要生成的exe的名字,“Icon File”是应用程序显示的小图标,不选也行.继续Next. 

5.必须先配置Class-Path。点击+号加入文件,即jar文件,假设实用到其他资源须要把资源一起加入进去. 

6.General --- Main Class选择主类. 

7.Java Version --- Minimum version(低版本号必须填写),Maximumversion(高版本号能够为空)。假设都有填写那么高版本号的值必须大于低版本号的值. 

8.勾选Allow JREs with a beta version number以及Only allow JDKs andno JREs.接着Next.到这一步你能够直接finish.这样就把jar转换成exe文件了.你能够点击Click Here to Start the Applicationbutton測试生成的文件.

Client端生成exe步骤同上。

原文地址:https://www.cnblogs.com/gccbuaa/p/6877575.html