首页 > 编程 > Java > 正文

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

2019-11-26 14:26:10
字体:
来源:转载
供稿:网友

本文实例为大家分享了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();  }}

以上就是java实现TCPSocket聊天室功能的代码,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表