在路上

 找回密码
 立即注册
在路上 站点首页 学习 查看内容

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

2016-7-29 15:37| 发布者: zhangjf| 查看: 776| 评论: 0

摘要: 本文实例为大家分享了java实现TCPSocket聊天室功能的相关代码,供大家参考,具体内容如下 1.TCPserver.java import java.net.*;import java.io.*;import java.util.*;import java.util.concurrent.*;public class T ...

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

1.TCPserver.java

  1. import java.net.*;
  2. import java.io.*;
  3. import java.util.*;
  4. import java.util.concurrent.*;
  5. public class TCPserver{
  6. private static final int SERVERPORT = 8888;
  7. private ServerSocket MyServer = null;
  8. private List<Socket> Clients = new ArrayList<Socket>();
  9. private ExecutorService mExecutorService;
  10. public TCPserver(){
  11. try{
  12. MyServer = new ServerSocket(SERVERPORT);
  13. mExecutorService = Executors.newCachedThreadPool();
  14. System.out.println("start:");
  15. Socket MySocket = null;
  16. while(true){
  17. MySocket = MyServer.accept();
  18. Clients.add(MySocket);
  19. mExecutorService.execute(new ThreadServer(MySocket));
  20. }
  21. }catch(Exception e){
  22. e.printStackTrace();
  23. System.exit(0);
  24. }
  25. }
  26. class ThreadServer implements Runnable{
  27. private Socket msocket=null;
  28. private BufferedReader in= null;
  29. private PrintWriter out = null;
  30. private String mStrMSG = null;
  31. public ThreadServer(Socket socket) {
  32. try{
  33. this.msocket=socket;
  34. in = new BufferedReader(new InputStreamReader(msocket.getInputStream(), "GB2312"));
  35. mStrMSG = "user:" + msocket.getInetAddress() + " come total:" + Clients.size();
  36. SendMassage();
  37. }catch(IOException e){
  38. System.out.println("erorr");
  39. System.exit(0);
  40. }
  41. }
  42. private void SendMassage(){
  43. try{
  44. System.out.println(mStrMSG);
  45. for(Socket MySocket:Clients)
  46. {
  47. out = new PrintWriter(new OutputStreamWriter(MySocket.getOutputStream(),"GB2312"),true);
  48. out.println(mStrMSG);
  49. }
  50. }catch(IOException e){
  51. System.out.println("erorr");
  52. System.exit(0);
  53. }
  54. }
  55. public void run(){
  56. try{
  57. while((mStrMSG = in.readLine())!=null){
  58. if(mStrMSG.trim().equals("exit")){
  59. Clients.remove(msocket);
  60. in.close();
  61. out.close();
  62. mStrMSG = "user:" + msocket.getInetAddress() + " exit tatal:" + Clients.size(); ;
  63. msocket.close();
  64. SendMassage();
  65. break;
  66. }
  67. else{
  68. mStrMSG = msocket.getInetAddress()+":" + mStrMSG;
  69. SendMassage();
  70. }
  71. }
  72. }catch(IOException e){
  73. System.out.println("erorr");
  74. System.exit(0);
  75. }
  76. }
  77. }
  78. public static void main(String[] args){
  79. new TCPserver();
  80. }
  81. }
复制代码

2.TCPclient.java

  1. import java.net.*;
  2. import java.io.*;
  3. import java.util.concurrent.*;
  4. public class TCPclient {
  5. private static final int PORT = 8888;
  6. private Socket Client = null;
  7. private BufferedReader sin = null;
  8. private ExecutorService mExecutorService;
  9. public TCPclient(){
  10. try{
  11. Client = new Socket("120.27.126.174",PORT);
  12. sin = new BufferedReader(new InputStreamReader(Client.getInputStream(),"GB2312"));
  13. mExecutorService = Executors.newCachedThreadPool();
  14. mExecutorService.execute(new ThreadClient(Client));
  15. String msg = null;
  16. while((msg = sin.readLine()) != null) {
  17. System.out.println(msg);
  18. }
  19. }catch(IOException e){
  20. System.out.println(e.getMessage());
  21. }
  22. }
  23. class ThreadClient extends Thread{
  24. private Socket mSocket = null;
  25. private String msg = null;
  26. BufferedReader in = null;
  27. PrintWriter out = null;
  28. public ThreadClient(Socket socket){
  29. this.mSocket = socket;
  30. }
  31. public void run(){
  32. try{
  33. in = new BufferedReader(new InputStreamReader(System.in));
  34. out = new PrintWriter(new OutputStreamWriter(mSocket.getOutputStream(), "GB2312"), true);
  35. while(true){
  36. msg = in.readLine();
  37. out.println(msg);
  38. if(msg.trim().equals("exit")){
  39. in.close();
  40. out.close();
  41. mExecutorService.shutdownNow();
  42. break;
  43. }
  44. }
  45. }catch(IOException e){
  46. System.out.println("see you");
  47. System.exit(0);
  48. }
  49. }
  50. }
  51. public static void main(String[] args){
  52. new TCPclient();
  53. }
  54. }
复制代码

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

最新评论

小黑屋|在路上 ( 蜀ICP备15035742号-1 

;

GMT+8, 2025-5-6 16:16

Copyright 2015-2025 djqfx

返回顶部