socket 收发聊天内容

package aaa;

import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

//客户端的类

public class ChatClientFrame extends JFrame {
 
 private JTextField txtSend=new JTextField();
 private JTextArea txtMsg=new JTextArea();
 private JButton btn=new JButton("send");
 private BufferedReader br;
 private BufferedWriter bw;
 
 public ChatClientFrame() {
  this.setBounds(550,50,520,540);
  this.setTitle("client");
  Container c=this.getContentPane();
  c.setLayout(null);
  txtMsg.setBounds(20,20,460,400);
  txtMsg.setBackground(Color.YELLOW);
  txtMsg.setEditable(false);
  txtSend.setBounds(20, 440, 320, 40);
  btn.setBounds(380,440,100,40);
  c.add(txtMsg);
  c.add(txtSend);
  c.add(btn);
  this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  this.setVisible(true);
  btn.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    String text = txtSend.getText();
    try {
     bw.write(text+'\n');
     bw.flush();
     String text2 = txtMsg.getText();
     if(text2.equals("")){
      
      txtMsg.setText(txtMsg.getText()+"发送: "+text+"");
     }else{
      txtMsg.setText(txtMsg.getText()+"\n发送: "+text+"");
     }
     txtSend.setText("");
     txtSend.requestFocus();
    } catch (IOException e1) {
     // TODO Auto-generated catch block
     e1.printStackTrace();
    }
    // TODO Auto-generated method stub
    
   }
  });
  try {
   btn.setEnabled(false);
   Socket socket=new Socket("localhost", 9000);
   btn.setEnabled(true);
   br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
   bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
   
   new Thread(){
    public void run() {
     while(true){
      try {
       String s=br.readLine();
       String s1=txtMsg.getText();
       if(s1.equals("")){
        
        txtMsg.setText(txtMsg.getText()+"接受: "+s);
       }else{
        txtMsg.setText(txtMsg.getText()+"\n接受: "+s);
       }
      } catch (IOException e) {
       e.printStackTrace();
      }
      
     }
    }
   }.start();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 public static void main(String[] args) {
  new ChatClientFrame();
 }

}

 

 

 

 

package aaa;

import java.awt.Color;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;

//服务端的类

public class ChatServerFrame extends JFrame {
 
 private JTextField txtSend=new JTextField();
 private JTextArea txtMsg=new JTextArea();
 private JButton btn=new JButton("send");
 private BufferedReader br;
 private BufferedWriter bw;
 
 public ChatServerFrame() {
  this.setBounds(50,50,520,540);
  this.setTitle("server");
  Container c=this.getContentPane();
  c.setLayout(null);
  txtMsg.setBounds(20,20,460,400);
  txtMsg.setBackground(Color.YELLOW);
  txtMsg.setEditable(false);
  txtSend.setBounds(20, 440, 320, 40);
  btn.setBounds(380,440,100,40);
  c.add(txtMsg);
  c.add(txtSend);
  c.add(btn);
  this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  this.setVisible(true);
  btn.addActionListener(new ActionListener() {
   
   @Override
   public void actionPerformed(ActionEvent e) {
    String text = txtSend.getText();
    try {
     bw.write(text+'\n');
     bw.flush();
     String text2 = txtMsg.getText();
     if(text2.equals("")){
      
      txtMsg.setText(txtMsg.getText()+"发送: "+text+"");
     }else{
      txtMsg.setText(txtMsg.getText()+"\n发送: "+text+"");
     }
     txtSend.setText("");
     txtSend.requestFocus();
    } catch (IOException e1) {
     // TODO Auto-generated catch block
     e1.printStackTrace();
    }
    // TODO Auto-generated method stub
    
   }
  });
  try {
   ServerSocket serverSocket=new ServerSocket(9000);
   btn.setEnabled(false);
   Socket socket=serverSocket.accept();
   btn.setEnabled(true);
   br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
   bw=new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
   
   new Thread(){
    public void run() {
     while(true){
      try {
       String s=br.readLine();
       String s1=txtMsg.getText();
       if(s1.equals("")){
        
        txtMsg.setText(txtMsg.getText()+"接受: "+s);
       }else{
        txtMsg.setText(txtMsg.getText()+"\n接受: "+s);
       }
      } catch (IOException e) {
       e.printStackTrace();
      }
      
     }
    }
   }.start();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
 }
 public static void main(String[] args) {
  new ChatServerFrame();
 }

}

posted @ 2015-11-08 15:05  wowowo1  阅读(203)  评论(0)    收藏  举报