针对于tcp简单socket的聊天

代码展示

1 监听线程

package TcpChat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;

public class MonitoringMessage extends Thread {
    private Socket socket;

    public Socket getSocket() {
        return socket;
    }

    public void setSocket(Socket socket) {
        this.socket = socket;
    }

    public MonitoringMessage(Socket socket) {
        super();
        this.socket = socket;
    }

    public void run() {
        try {
        BufferedReader br = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
        while(true){//用死循环等待对方发送的消息
                System.out.println(br.readLine());
        }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端代码:

package TcpChat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientChat {
   public static void main(String[] args) {

       Socket socket = null;
          try {
              socket = new Socket("127.0.0.1",5431);
              PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
              BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
              new MonitoringMessage(socket).start();  //监听发送过来的消息
              while(true){
                  out.println(br.readLine());
              }
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
        
                if(null!=socket){
                    try {
                        
                        socket.close();
                    
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            
        }
    
}
}

服务端代码:

package TcpChat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class ServiceChat {
  public static void main(String[] args) {

        ServerSocket serverSocket = null;
        Socket socket = null;
        try {
            serverSocket = new ServerSocket(5431);
            socket = serverSocket.accept();
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()),true);
            new MonitoringMessage(socket).start();
            while(true){
                out.println(br.readLine());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(null!=socket){
                try {
                    socket.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            
            if(null!=serverSocket){
                try {
                    
                    
                    serverSocket.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            
        }
        
    
}
}

 

posted @ 2012-12-08 14:34  虎猫  阅读(191)  评论(0编辑  收藏  举报