java小聊天程序

    技术2022-05-11  57

     服务器端:

    package  as; import  java.awt.BorderLayout; import  java.awt.Container; import  java.awt.event.ActionEvent; import  java.awt.event.ActionListener; import  java.awt.event.WindowAdapter; import  java.awt.event.WindowEvent; import  java.io. * ; import  java.net.ServerSocket; import  java.net.Socket; import  javax.swing.JFrame; import  javax.swing.JLabel; import  javax.swing.JPanel; import  javax.swing.JTextArea; import  javax.swing.JTextField; public   class  CharServerText  extends  JFrame  implements  ActionListener{    JLabel jl  =   new  JLabel( " 输入您要说的话 " );    JPanel jp  =   new  JPanel();    JTextField jtf  =   new  JTextField( 15 );    JTextArea jta  =   new  JTextArea( 10 , 10 );    ServerSocket ss;    Socket sk;    BufferedReader br;    PrintWriter pw;     public  CharServerText()    {         super ( " Server 端 " );        Container con  =  getContentPane();        jp.add(jl);        jp.add(jtf);         con.add(jp,BorderLayout.SOUTH);        con.add(jta,BorderLayout.CENTER);        jtf.addActionListener( this );        addWindowListener( new  WindowAdapter()                {                    public   void  windowClosing(WindowEvent e)                   {                       System.exit( 0 );                   }                }                );        setSize( 300 , 250 );        show();         try           {             ss  =   new  ServerSocket( 9010 );             sk  =  ss.accept();             System.out.println( " 1111 " );             jta.append( " 已连接到客户机 " + sk.getInetAddress().getHostName() + " " );             br  =   new  BufferedReader( new  InputStreamReader(sk.getInputStream()));             pw  =   new  PrintWriter(sk.getOutputStream(), true );              while ( true )                 {                     String ii = br.readLine();                      if (ii != null ){                         System.out.println( " 1 " );                             jta.append( " Client说: " + ii + " " );                     }                 }                      }          catch  (Exception e)           {             e.printStackTrace();          }         finally         {             try  {                ss.close();                sk.close();                br.close();                pw.close();            }  catch  (IOException e) {                e.printStackTrace();            }        }            }      public   void  actionPerformed(ActionEvent arg0)    {         try  {               String str  =  jtf.getText();                   jtf.setText( "" );               pw.println(str);               pw.flush();               jta.append( " Server说: " + str + " " );                           }  catch  (Exception e) {                e.printStackTrace();            }    }   public   static   void  main(String[] args)    {          new  CharServerText();    }}

    客户端:

    package  as; import  java.awt.BorderLayout; import  java.awt.Container; import  java.awt.event.ActionEvent; import  java.awt.event.ActionListener; import  java.awt.event.WindowAdapter; import  java.awt.event.WindowEvent; import  java.io. * ; import  java.net.Socket; import  java.net.UnknownHostException; import  javax.swing.JFrame; import  javax.swing.JLabel; import  javax.swing.JPanel; import  javax.swing.JTextArea; import  javax.swing.JTextField; public   class  CharClientText  extends  JFrame  implements  ActionListener{    JLabel jl  =   new  JLabel( " 输入您要说的话 " );    JPanel jp  =   new  JPanel();    JTextField jtf  =   new  JTextField( 15 );    JTextArea jta  =   new  JTextArea( 10 , 10 );    Socket sk = null ;    BufferedReader br;    BufferedWriter bof;    PrintWriter pw;     public  CharClientText()    {         super ( " Client 端 " );        Container con  =  getContentPane();        jp.add(jl);        jp.add(jtf);        con.add(jp,BorderLayout.SOUTH);        con.add(jta,BorderLayout.CENTER);        jtf.addActionListener( this );        addWindowListener( new  WindowAdapter()                {                    public   void  windowClosing(WindowEvent e)                   {                       System.exit( 0 );                   }                }                );        setSize( 300 , 250 );        show();         try          {            Socket sk  =   new  Socket( " 127.0.0.1  " , 9010 );            jta.append( " 已连接到服务器 " + sk.getInetAddress().getHostName() + " " );            InputStream in = sk.getInputStream();            br  =   new  BufferedReader( new  InputStreamReader(in));            pw  =   new  PrintWriter(sk.getOutputStream(), true );              while ( true )             {                 String ii = br.readLine();                  if (ii != null ){                     System.out.println( " 1 " );                         jta.append( " Server说: " + ii + " " );                 }             }        }          catch  (Exception e)        {            e.printStackTrace();        }         finally         {             try  {                sk.close();                br.close();                pw.close();            }  catch  (IOException e) {                e.printStackTrace();            }        }            }      public   void  actionPerformed(ActionEvent arg0)     {             try  {           String str  =  jtf.getText();               jtf.setText( "" );           pw.println(str);           pw.flush();           jta.append( " Client说: " + str + " " );                   }  catch  (Exception e) {            e.printStackTrace();        }    }         public   static   void  main(String[] args)    {          new  CharClientText();    }}

    最新回复(0)