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

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



相关阅读:
使用C语言详解霍夫曼树数据结构
asp.net判断字符串是否是中文的方法
MySQL中distinct与group by语句的一些比较及用法讲解
Android程序开发通过HttpURLConnection上传文件到服务器
PHP中类的继承和用法实例分析
各种AJAX方法的使用比较详解
win7升级win8系统后鼠标间歇性失灵如何解决
php微信支付之APP支付方法
win10预览版10061系统主题颜色怎么更改
Jquery实现仿腾讯微博发表广播
PHP 抽象方法与抽象类abstract关键字介绍及应用
使用配置类定义Codeigniter全局变量
WordPress主题制作之模板文件的引入方法
如何解决mysqlimport: Error: 13, Can't get stat of 的问题
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 致新员工的一封信 咏史诗。瑶池 高中高二作文900字:一次难忘的军营之旅 毕业论文格式3 可贵的沉默读后感 副县长在全县村级计生管理员竞聘上岗工作现场会上的讲话 自个儿的脑细胞[切克闹] 如果你也有放不下的人,进来读读吧,相信你会学会放弃的 小学一年级作文800字:逛华地百货作文 原来所有的过往都只是序曲 食品药品安全监管岗位演讲稿 我的祖国——国庆60周年作文作文700字 2015年度财务科工作计划 作文 所谓的快乐 从此,我不再一无所有 钞票的自述作文800字 速度与激情7的经典台词 小品:夫妻吵嘴 公主救王子 作业你个鬼畜!老子不做了! 落叶,好一道风景作文600字 感动是花,行动为果作文 支部党员先进性教育活动全面总结 暗恋时,你做过哪些傻事 有关浇花的作文200字 我们,若、只如初见 四年级下册科学全册教学设计(苏教版) 寝室长不尽责的检讨书 财务管理制度范本 夏天的夜 沉溺在自己的世界 桌子哥哥和凳子弟弟的对话作文500字 厨房各岗位工作职责 听起来是真心话其实是谎言 基于工程量清单模式下建筑工程竣工结算造价管理研究分析 大学生实习感想 冬季假期同学联谊会主持词 中小学生安全教育日活动方案_策划方案 同桌,你好作文 2011年个人工作总结范文(医院院长总结) 高中高三作文1200字:放风筝 哦,我的朋友。 就业局落实科学发展观分析检查阶段总结 我在读书中得到乐趣作文600字 我渴望当上航天员作文200字 小学六年级作文800字:爱慕一枝花 生产工作者入党思想汇报 暑假实践家教 亲爱的母校作文600字 感情的承诺你信吗

Copyright © 2016 phpStudy |