代码展示
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();}}}}
}