软件编程
位置:首页>> 软件编程>> java编程>> java实现一个简单TCPSocket聊天室功能分享

java实现一个简单TCPSocket聊天室功能分享

作者:小小小丑  发布时间:2022-06-11 20:04:36 

标签:java,TCPSocket,聊天室

本文实例为大家分享了java实现TCPSocket聊天室功能的相关代码,供大家参考,具体内容如下

1.TCPserver.java


import java.net.*;
import java.io.*;
import java.util.*;
import java.util.concurrent.*;
public class TCPserver{
private static final int SERVERPORT = 8888;
private ServerSocket MyServer = null;
private List<Socket> Clients = new ArrayList<Socket>();
private ExecutorService mExecutorService;
public TCPserver(){
 try{
  MyServer = new ServerSocket(SERVERPORT);
  mExecutorService = Executors.newCachedThreadPool();
  System.out.println("start:");
  Socket MySocket = null;
  while(true){
  MySocket = MyServer.accept();
  Clients.add(MySocket);
  mExecutorService.execute(new ThreadServer(MySocket));
  }
 }catch(Exception e){
   e.printStackTrace();
   System.exit(0);
  }
}
class ThreadServer implements Runnable{
 private Socket msocket=null;
 private BufferedReader in= null;
 private PrintWriter out = null;
 private String mStrMSG = null;
 public ThreadServer(Socket socket) {
  try{  
  this.msocket=socket;
  in = new BufferedReader(new InputStreamReader(msocket.getInputStream(), "GB2312"));
  mStrMSG = "user:" + msocket.getInetAddress() + " come total:" + Clients.size();
  SendMassage();
  }catch(IOException e){
   System.out.println("erorr");
   System.exit(0);
  }
 }
 private void SendMassage(){
  try{
   System.out.println(mStrMSG);
   for(Socket MySocket:Clients)
   {
   out = new PrintWriter(new OutputStreamWriter(MySocket.getOutputStream(),"GB2312"),true);
   out.println(mStrMSG);
   }
  }catch(IOException e){
   System.out.println("erorr");
   System.exit(0);
  }
 }
 public void run(){
  try{
   while((mStrMSG = in.readLine())!=null){
    if(mStrMSG.trim().equals("exit")){
     Clients.remove(msocket);
     in.close();
     out.close();
     mStrMSG = "user:" + msocket.getInetAddress() + " exit tatal:" + Clients.size();      ;
     msocket.close();
     SendMassage();      
     break;
    }
    else{
     mStrMSG = msocket.getInetAddress()+":" + mStrMSG;
     SendMassage();
    }

}
  }catch(IOException e){
   System.out.println("erorr");
   System.exit(0);
  }

}
}
public static void main(String[] args){
 new TCPserver();
}
}

2.TCPclient.java


import java.net.*;
import java.io.*;
import java.util.concurrent.*;
public class TCPclient {
private static final int PORT = 8888;
private Socket Client = null;
private BufferedReader sin = null;
private ExecutorService mExecutorService;
public TCPclient(){
 try{
  Client = new Socket("120.27.126.174",PORT);
 sin = new BufferedReader(new InputStreamReader(Client.getInputStream(),"GB2312"));
 mExecutorService = Executors.newCachedThreadPool();
 mExecutorService.execute(new ThreadClient(Client));
 String msg = null;
 while((msg = sin.readLine()) != null) {
   System.out.println(msg);
  }
 }catch(IOException e){
     System.out.println(e.getMessage());
   }

}
class ThreadClient extends Thread{
 private Socket mSocket = null;
 private String msg = null;
 BufferedReader in = null;
 PrintWriter out = null;
  public ThreadClient(Socket socket){
   this.mSocket = socket;
  }
  public void run(){
   try{
    in = new BufferedReader(new InputStreamReader(System.in));
    out = new PrintWriter(new OutputStreamWriter(mSocket.getOutputStream(), "GB2312"), true);
    while(true){
    msg = in.readLine();
    out.println(msg);
     if(msg.trim().equals("exit")){
      in.close();
      out.close();
       mExecutorService.shutdownNow();    
     break;
     }
    }
   }catch(IOException e){
    System.out.println("see you");
    System.exit(0);
   }
  }
}
public static void main(String[] args){
 new TCPclient();
}
}
0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com