`
朱辉辉33
  • 浏览: 27043 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

socket聊天室之服务器搭建

    博客分类:
  • java
阅读更多
因为我们做的是聊天室,所以会有多个客户端,每个客户端我们用一个线程去实现,通过搭建一个服务器来实现从每个客户端来读取信息和发送信息。
   我们先写客户端的线程。
public class ChatSocket extends Thread{
Socket socket;

public ChatSocket(Socket socket){
this.socket = socket;
}
        public void run(){
        }
}
   这是基础部分,但是这个线程还缺少发送信息和读取信息两个核心功能。发送信息比较简单,创建一个方法即可。
     public void out(String s){
     socket.getOutputString().write(s.getbytes("UTF-8"));
}在根据提示加入try/catch。这里发送信息方法只能发给自己。
  然后是创建读取信息方法。因为我们要一直监听有没有信息要读取,所以这个方法要写入run()里。
      public void run(){
      BufferedReader bf = new BufferedReader
    (new InputStreamReader(
            socket.getInputStream(),"utf-8"));//加入try/catch
       String line = null;
       whlie((line = bf.readline())!=null){
       //当循环结束意味着我们读取了写入的信息 存在line里
        }
       bf.close;
}
这样我们ChatSocket基本写完了,然后我们创建ServerSocket对象
   ServerSocket serversocket = new ServerSocket();
   Socket socket = serversocket.accept();
   ChatSocket chatsocket = new ChatSocket(socket);
    chatsocket.start();
写到这里每个线程都是独立的,达不到群聊的功能,所以我创建了一个ChatManager类用来管理每个线程。因为一个聊天室只需要一个ChatManager,所以我对它进行了单例化处理,然后写了一个获取它的方法getManager(),返回值就是ChatManager。还创建了一个Vector容器,用于存放线程。添加了一个add()方法。
   这里还剩下一个最重要的功能--群发信息功能,我们可以将Vector中的每一个线程遍历出来,如果不是本线程,则发送信息line,发送信息功能chatSocket里已经写好了,
public void publish(ChatSocket cs,String outString){
for(int i=0;i<vector.size();i++){
ChatSocket csChatSocket = vector.get(i);
if(!cs.equals(csChatSocket)){
csChatSocket.output(outString);
}
}
}
outString就是我们要发送的之前读取的信息line,所以在读取line之后调用publish方法,就把写入的信息发给了其他的客户端,整个服务器我们就搭建好了。最后附上程序。
0
1
分享到:
评论
1 楼 朱辉辉33 2015-04-06  
打开客户端是在命令提示符里输入telnet localhost 8080  可以多输入几次 打开几个客户端看效果

相关推荐

    网络聊天室(socket中的select模型)

    网络聊天室(socket中的select模型) 服务器、客户端 有点像qq群组

    基于Linux系统的简易网络聊天室

    基于Linux系统多线程以及socket编程技术实现的简单的网络聊天室小项目,支持多人链接、离线检测等

    Node.js中使用socket创建私聊和公聊聊天室

    在上篇文章给大家介绍使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室,本文继续介绍Node.js中使用socket创建私聊和公聊聊天室,具体详情请看下文吧。 nodejs的应用中,关于socket应该是比较出彩的了,socket...

    【JavaScript源代码】基于websocket实现简单聊天室对话.docx

    首先搭建一个node的环境,在app.js中写入以下代码 npm install socket.io-client socket是一个高性能的服务器框架,开发者只要实现一两个接口,便可以开发出自己的网络应用,例如Rpc服务、聊天室服务器、手机游戏...

    使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室

    一,利用Node搭建静态服务器  这个是这个项目的底层支撑部分。用来支持静态资源文件像html, css, gif, jpg, png, javascript, json, plain text等等静态资源的访问。这里面是有一个mime类型的文件映射。 mime.js ...

    微言聊天室是基于前后端分离,采用SpringBoot+Vue开发的网页版聊天室+源代码+文档说明+演示视频

    微言聊天室是基于前后端分离,采用SpringBoot+Vue框架开发的网页版聊天室。 使用了Spring Security安全框架进行密码的加密存储和登录登出等逻辑的处理,以WebSocket+Socket.js+Stomp.js实现消息的发送与接收,监听。...

    Java毕业设计-JAVA基于局域网的聊天室系统(源代码+论文).rar

    本资源适用于Java学习者、网络编程爱好者以及需要搭建局域网聊天室的企业或个人。通过学习和实践,您可以深入了解Java Socket编程原理,掌握局域网通信的核心技术,并能够根据实际需求对系统进行二次开发和定制。

    局域网聊天

    局域网聊天软件 安卓软件一个基于socket的聊天工具,整个聊天是通过服务器转发的,这样处理起来比较简单,但是服务器压力会特别大。建议在真正做项目的时候,服务器只处理用户注册、登录以及判断用户是否掉线等,...

    零基础实现node+express个性化聊天室的示例

    本篇文章使用node+express+jquery写一个个性化聊天室,一起来...1、将聊天室部署到服务器 先用node搭建一个服务器,部署在localhost:3000端口,先尝试向浏览器发送一个“hello world”,新建server.js文件。 var ap

    Nodejs实现多房间简易聊天室功能

     1、包描述文件:package.json,这里用到了两个依赖项,mime:确定静态文件mime类型,socket.io:搭建websocket服务,然后使用npm install 安装依赖 { name: chat_room, version: 1.0.0, description: this is a...

    计算机网络的课程作业-基于python实现的网络聊天室源码+部署操作说明+注释拉满.zip

    该项目为计算机网络的课程作业——网络聊天室,涵盖了基本的socket网络编程、Tkinter图像化界面、MySQL数据库等技术,可实现表情包的发送、单用户私聊、机器人对话等功能 用户密码采用MD5加密(可根据需要,灵活...

    安卓android SocketIo使用方式socketIo

    安卓使用socketio,和服务器进行通信,实现聊天室功能,可以正常进入退出聊天室,可以发送消息

    subtlechat:微言聊天室是基于前后端分离,采用SpringBoot+Vue开发的网页版聊天室

    项目介绍微言聊天室是基于前后端分离,采用SpringBoot+Vue框架开发的网页版聊天室。使用了Spring Security安全框架进行密码的加密存储和登录登出等逻辑的处理,以WebSocket+Socket.js+Stomp.js实现消息的发送与接收...

    细细品味架构·从零开始搭建高可用IM系统(第3期)

    1.2.3 WEB 聊天室 1.2.4 IM 典型业务场景 1.2.5 现场答疑【Q&A】 2、知识扩展 2.1 SSL 协议详解 2.1.1 密码学概念 2.1.2 相关加密介绍 2.1.3 SSL 介绍及特性 2.1.4 SSH 的基本原理 2.2 Rss 与Feed 的概念区别 ...

    打造Node.js全栈开发工程师

    五、主流的实时通信解决方案websocket和socket.io:这部分我们使用socket.io搭建一个功能完善的聊天室。包括匿名聊天、具名聊天、划分不同的房间、私聊等功能。并且会将数据保存到数据库中进行持久化;六、实用的...

    webRTC网页实时通信--视频教程.txt

    该教程包含了webrtc音视频入门与实战,视频教程,带源码和...包含了webrtc运行机制原理与架构,web服务器原理与搭建Nodejs开发环境,webrtc音视频设备管理,webrtc集成socket开发及时聊天室等教程 该资源来源于网络。

    chatroom-mqtt

    基于 MQTT 消息队列的简易聊天室。主要使用 Node 模块中的 Express 搭建服务器,Vue 编写前端,使用 socket.io 进行 WebSocket 通信。 环境准备 安装一个 MQTT 服务器并启动,推荐,此处不再赘述。 部署服务器 见 ...

    基于Java的视频会议系统的实现.rar

    网络通信:采用Java的Socket编程实现客户端与服务器之间的通信,可以选择TCP或UDP协议。 图形界面:可以使用JavaFX或Swing等GUI库来实现客户端的用户界面设计。 安全性考虑: 数据加密:对音视频数据和聊天内容进行...

Global site tag (gtag.js) - Google Analytics