简单的java聊天室

来源:互联网 发布:阿里的算法工程师年薪 编辑:程序博客网 时间:2024/04/29 03:16

/**

**Server端:

*/

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();
    }
}
 

 

/**

**Clientr端:

*/

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();
    }
}

出自 http://blog.csdn.net/dazhen520/archive/2007/02/06/1503426.aspx

原创粉丝点击