zoukankan      html  css  js  c++  java
  • 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步骤同上。

  • 相关阅读:
    stm32 SPI DMA读取ADS8345数据
    Minigui3.0.12完美安装,折腾了一天。终于看到了
    qvfb2的安装,在ubuntu10.4上安装成功
    户口从杭州人才市场迁移到武汉万科魅力之城的过程
    禁止minigui 3.0的屏幕保护
    想穿越回到儿时记录那些幸福
    TIM2定时闪灯程序。。。
    关于minigui的皮肤控件无法显示问题
    插件框架内核的设计
    用“序列图”描述技术方案
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/6877575.html
Copyright © 2011-2022 走看看