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