VasilM

simple_client_

May 29th, 2013
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.22 KB | None | 0 0
  1. /**
  2.  * @(#)ExampleClient.java
  3.  *
  4.  * ExampleClient application
  5.  *
  6.  * @author
  7.  * @version 1.00 2008/5/25
  8.  */
  9.  import java.awt.*;
  10.  import java.awt.event.*;
  11.  import java.net.*;
  12.  import java.io.*;
  13.  
  14. /**********************************************************************************/
  15. /* Примерна задача за контролна работа по CSCB 302 "Програмиране на Java"         */
  16. /* Клиентска част                                                                 */
  17. /**********************************************************************************/
  18.  
  19. public class ExampleClient extends Frame {
  20.     // Порт за комуникация със сървъра
  21.     final int PORT_NUMBER = 3333;
  22.    
  23.     // Елементи на графичния потребителски интерфейс
  24.     private MenuBar menuBar = new MenuBar();
  25.     private Menu menuFile = new Menu("File");
  26.     private Menu menuHelp = new Menu("Help");
  27.     private TextField textSend = new TextField(20);
  28.     private TextArea textArea = new TextArea(5,20);
  29.    
  30.     private Button buttonConnect = new Button("Connect");
  31.     private Button buttonSend = new Button("Send");
  32.     private Button buttonDisconnect = new Button("Disconnect");
  33.     private Button buttonQuit = new Button("Quit");
  34.    
  35.     private Label empty = new Label("");
  36.     private Panel leftPanel = new Panel();
  37.     private Panel rightPanel = new Panel();
  38.  
  39.     // Входен поток
  40.     private BufferedReader in;
  41.     // Изходен поток
  42.     private PrintWriter ou;
  43.    
  44.     // Сокет за комуникация  
  45.     private Socket sock;
  46.    
  47.     public ExampleClient () {
  48.         setTitle("Example Client");
  49.        
  50.         setMenuBar(menuBar);
  51.         menuBar.add(menuFile);
  52.         menuBar.add(menuHelp);
  53.        
  54.         leftPanel.setLayout(new BorderLayout());
  55.         rightPanel.setLayout(new GridLayout(6,1));
  56.        
  57.         leftPanel.add(textSend,BorderLayout.NORTH);
  58.         leftPanel.add(textArea,BorderLayout.CENTER);
  59.        
  60.         rightPanel.add(buttonConnect);
  61.         rightPanel.add(buttonSend);
  62.         rightPanel.add(buttonDisconnect);
  63.         rightPanel.add(empty);
  64.         rightPanel.add(empty);
  65.         rightPanel.add(buttonQuit);
  66.        
  67.         add(rightPanel,BorderLayout.EAST);
  68.         add(leftPanel,BorderLayout.CENTER);
  69.         // Обработка на WindowEvent - затваряне на прозореца
  70.         addWindowListener (new WindowAdapter() {
  71.             public void windowClosing(WindowEvent e){
  72.                 quit();
  73.             }
  74.         });
  75.         // Задействане на бутон "Connect"
  76.         buttonConnect.addActionListener (new ActionListener() {
  77.             public void actionPerformed (ActionEvent e) {
  78.                 connect();
  79.             }
  80.         });
  81.         // Задействане на бутон "Send"
  82.         buttonSend.addActionListener (new ActionListener () {
  83.             public void actionPerformed (ActionEvent e) {
  84.                 send(in, ou);
  85.             }
  86.         });
  87.         // Задействане на бутон Quit
  88.         buttonQuit.addActionListener (new ActionListener () {
  89.             public void actionPerformed(ActionEvent e) {
  90.                 quit();
  91.             }
  92.         });
  93.         // Задействане на бутон "Disconnect"
  94.         buttonDisconnect.addActionListener(new ActionListener(){
  95.             public void actionPerformed(ActionEvent e) {
  96.                 disconnect(in, ou);
  97.             }
  98.         });
  99.        
  100.         buttonConnect.setEnabled(true);
  101.         buttonSend.setEnabled(false);
  102.         buttonDisconnect.setEnabled(false);
  103.        
  104.         setVisible(true);
  105.         pack();
  106.         setResizable(false);
  107.        
  108.     }
  109.     // Функция "Connect" - свързване със сървъра
  110.     private void connect() {
  111.         try {
  112.             // Създаване на сокет за комуникация със сървъра
  113.             sock = new Socket(InetAddress.getLocalHost(),PORT_NUMBER);
  114.             // Отваряне на входния поток
  115.             in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
  116.             // Отваряне на изходния поток
  117.             ou = new PrintWriter(new OutputStreamWriter(sock.getOutputStream()));
  118.             System.out.println("Connected!");
  119.             textArea.append(in.readLine() + "\n");
  120.             textArea.append(in.readLine() + "\n");         
  121.         } catch (IOException ioe) {
  122.             System.out.println(ioe.getMessage());
  123.             ioe.printStackTrace();
  124.         }
  125.  
  126.        
  127.         buttonConnect.setEnabled(false);
  128.         buttonSend.setEnabled(true);
  129.         buttonDisconnect.setEnabled(true);
  130.     }
  131.     // Функция "Disconnect" - изпращане на съобщение към сървъра
  132.     private void send (BufferedReader in, PrintWriter out) {
  133.         String inLine;
  134.         try {
  135.             ou.println(textSend.getText()); ou.flush();
  136.             textArea.appendText("Client: " + textSend.getText() + "\n");   
  137.             textSend.setText("");
  138.             inLine = in.readLine();
  139.             textArea.appendText("Server: " + inLine + "\n");       
  140.         } catch (IOException ioe) {
  141.             ioe.printStackTrace();
  142.         }
  143.     }
  144.     // Излизане от приложението
  145.     private void quit() {
  146.         System.exit(0);
  147.     }
  148.     // Прекратяване на връзката със сървъра
  149.     private void disconnect(BufferedReader in, PrintWriter out) {
  150.         ou.println("BYE");
  151.         ou.flush();
  152.         try {
  153.             in.close();
  154.             ou.close();
  155.         } catch (IOException ioe) {
  156.             System.out.println (ioe.getMessage());
  157.             ioe.printStackTrace();
  158.         }
  159.         buttonConnect.setEnabled(true);
  160.         buttonDisconnect.setEnabled(false);
  161.     }
  162.    
  163.     public static void main(String[] args) {
  164.         ExampleClient clientFrame = new ExampleClient();
  165.     }  
  166. }
Advertisement
Add Comment
Please, Sign In to add comment