java写的TCP局域网聊天系统

来源:互联网 发布:c语言windows窗口程序 编辑:程序博客网 时间:2024/05/18 02:30
import java.awt.BorderLayout;  
import java.awt.Dimension;  
import java.awt.Toolkit;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import java.awt.event.KeyEvent;  
import java.awt.event.KeyListener;  
  
import java.io.BufferedReader;  
import java.io.PrintWriter;  
  
import java.io.InputStreamReader;  
import java.net.ServerSocket;  
import java.net.Socket;  
  
import javax.swing.JButton;  
import javax.swing.JFrame;  
import javax.swing.JPanel;  
import javax.swing.JScrollPane;  
import javax.swing.JTextArea;  
import javax.swing.JTextField;  
  
public class MyServer extends JFrame implements ActionListener, KeyListener {  
  
    /**

*/
private static final long serialVersionUID = 1L;
JPanel jp = null;  
    JTextArea jta = null;  
    JScrollPane jsp = null;  
    JTextField jtf = null;  
    JButton jb = null;  
    PrintWriter pw = null;  
  
    public static void main(String[] args) {  
        new MyServer();  
    }  
  
    public MyServer() {  
       //为文本域添加一个滚动条  
        jta = new JTextArea();  
        jsp = new JScrollPane(jta);  
  
        jtf = new JTextField(30);  
        jtf.addKeyListener(this);  
        jb = new JButton("发送");  
        jb.addActionListener(this);  
  
        jp = new JPanel();  
        jp.add(jtf);  
        jp.add(jb);  
  
        this.add(jsp, BorderLayout.CENTER);  
        this.add(jp, BorderLayout.SOUTH);  
        this.setSize(500, 400);  
        this.setTitle("服务端");  
  
        // 设置窗体居中  
        Dimension size = Toolkit.getDefaultToolkit().getScreenSize();  
        this.setLocation((int) ((size.getWidth() - this.getWidth()) / 2),  
                (int) ((size.getHeight() - this.getHeight()) / 2));  
  
        this.setVisible(true);  
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  
        try {  
            ServerSocket ss = new ServerSocket(9999);  
            Socket s = ss.accept();  
  
            // 读取从客户端发来的信息  
            InputStreamReader isr = new InputStreamReader(s.getInputStream());  
            BufferedReader br = new BufferedReader(isr);  
  
            pw = new PrintWriter(s.getOutputStream(), true);  
            while (true) {  
                String info = br.readLine();  
                jta.append(info + "\n");  
            }  
  
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
    }  
  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        if (e.getSource() == jb) {  
            String info = jtf.getText();  
            pw.println("服务器:" + info);  
            jta.append("服务器:" + info + "\n");  
            jtf.setText("");  
        }  
  
    }  
  
    @Override  
    public void keyTyped(KeyEvent e) {  
  
    }  
  
    @Override  
    public void keyPressed(KeyEvent e) {  
        // TODO Auto-generated method stub  
        if (e.getKeyCode() == KeyEvent.VK_ENTER) {  
  
            String info = jtf.getText();  
            pw.println("服务器:" + info);  
            jta.append("服务器:" + info + "\n");  
            jtf.setText("");  
        }  
    }  
  
    @Override  
    public void keyReleased(KeyEvent e) {  
        // TODO Auto-generated method stub  
  
    }  
  

}








import java.awt.BorderLayout;  
import java.awt.Dimension;  
import java.awt.Toolkit;  
import java.awt.event.ActionEvent;  
import java.awt.event.ActionListener;  
import java.awt.event.KeyEvent;  
import java.awt.event.KeyListener;  
import java.io.BufferedReader;  
import java.io.InputStreamReader;  
import java.io.PrintWriter;  
import java.net.Socket;  
  
import javax.swing.JButton;  
import javax.swing.JFrame;  
import javax.swing.JPanel;  
import javax.swing.JScrollPane;  
import javax.swing.JTextArea;  
import javax.swing.JTextField;  
  
public class MyClient extends JFrame implements ActionListener,KeyListener{  
  
     /**

*/
private static final long serialVersionUID = 1L;
JPanel jp=null;  
     JTextArea jta=null;  
     JScrollPane jsp=null;  
     JTextField jtf=null;  
     JButton jb=null;  
       
     PrintWriter pw=null;  
  
      public static void main(String[] args) {  
        new  MyClient();  
    }  
       
     public MyClient(){  
      
           
         jta=new JTextArea();  
         jsp=new JScrollPane(jta);  
           
         jtf=new JTextField(30);  
         jtf.addKeyListener(this);  
         jb=new JButton("发送");  
         jb.addActionListener(this);  
       
         jp=new JPanel();  
         jp.add(jtf);  
         jp.add(jb);  
            
          
  
         this.add(jsp,BorderLayout.CENTER);  
         this.add(jp,BorderLayout.SOUTH);  
         this.setSize(500,400);  
         this.setTitle("客户端");  
      
      
           
         //设置窗体居中  
         Dimension size=Toolkit.getDefaultToolkit().getScreenSize();  
         this.setLocation((int)((size.getWidth()-this.getWidth())/2),(int)((size.getHeight()-this.getHeight())/2));  
           
           
         this.setVisible(true);  
         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);      
           
         try {  
           Socket s=new Socket("127.0.0.1",9999);  
              
            //读取从客户端发来的信息  
            InputStreamReader isr=new InputStreamReader(s.getInputStream());  
            BufferedReader br=new BufferedReader(isr);  
              
            pw=new PrintWriter(s.getOutputStream(),true);  
            while(true){  
                String info=br.readLine();  
                jta.append(info+"\n");  
            }  
              
        } catch (Exception e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
     }  
  
    @Override  
    public void actionPerformed(ActionEvent e) {  
        if(e.getSource()==jb){  
            String info=jtf.getText();  
            pw.println("客户端:"+info);  
            jta.append("客户端:"+info+"\n");  
            jtf.setText("");  
        }  
          
    }  
  
    @Override  
    public void keyTyped(KeyEvent e) {  
        // TODO Auto-generated method stub  
          
    }  
  
    @Override  
    public void keyPressed(KeyEvent e) {  
        // TODO Auto-generated method stub  
        if(e.getKeyCode()==KeyEvent.VK_ENTER){  
            String info=jtf.getText();  
            pw.println("客户端:"+info);  
            jta.append("客户端:"+info+"\n");  
            jtf.setText("");  
        }  
          
    }  
  
    @Override  
    public void keyReleased(KeyEvent e) {  
        // TODO Auto-generated method stub  
          
    }  
  
}

0 0
原创粉丝点击