java实现一个简单TCPSocket聊天室功能分享
更新时间:2020年07月28日 15:20:07 作者:小小小丑
这篇文章主要为大家分享了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聊天室功能的代码,希望对大家的学习有所帮助。
相关文章
解决spring-data-jpa 事物中修改属性自动更新update问题
这篇文章主要介绍了解决spring-data-jpa 事物中修改属性自动更新update问题,具有很好的参考价值,希望对大家2021-08-08SpringBoot整合Thymeleaf与FreeMarker视图层技术
在目前的企业级应用开发中,前后端分离是趋势,但是视图层技术还占有一席之地。Spring Boot 对视图层技术提供了很好的支持,福安防推荐使用的模板引擎是Thymeleaf,不过想FreeMarker也支持,JSP技术在这里并不推荐使用2022-08-08使用JavaWeb webSocket实现简易的点对点聊天功能实例代码
这篇文章主要介绍了使用JavaWeb webSocket实现简易的点对点聊天功能实例代码的相关资料,内容介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧2016-05-05JavaMap两种遍历方式keySet与entrySet详解
这篇文章主要介绍了JavaMap两种遍历方式keySet与entrySet,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧2023-03-03
最新评论