因为我们做的是聊天室,所以会有多个客户端,每个客户端我们用一个线程去实现,通过搭建一个服务器来实现从每个客户端来读取信息和发送信息。
我们先写客户端的线程。
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方法,就把写入的信息发给了其他的客户端,整个服务器我们就搭建好了。最后附上程序。
分享到:
相关推荐
资源内容:基于Socket的聊天室Python实现(GUI版) 使用/学习目标:了解 Socket 核心原理 特点:简单、带GUI方便使用 适用人群:想阅读Python源码的初学者,想自己搭建远程聊天室的站长们 可以参考本资源来搭建属于...
在这个"Socket聊天室案例"中,我们将探讨如何利用Socket构建一个简单的聊天室应用,类似于我们日常使用的QQ、微信等社交工具。这个案例旨在帮助学习者理解Socket的工作原理以及在实际应用中的使用。 首先,Socket是...
Socket聊天室的工作原理不同于传统的CGI聊天室。它通过直接的Socket连接来进行通信,而不是通过HTTP服务器。当客户端发送请求时,服务器端模仿HTTP服务器的行为,直接响应并将聊天内容返回给客户端。这种方式的主要...
Socket开发聊天室手册是指导开发者如何使用Socket技术...通过深入阅读这份手册,开发者可以全面了解如何从零开始构建一个功能完善的聊天室应用,包括服务器端的搭建、客户端的设计、消息的编码解码以及网络安全措施等。
在本文中,我们将深入探讨如何使用Node.js和Socket.IO创建一个简单的聊天室。这是一个非常实用的项目,适合初学者入门,同时也是对这两种技术的绝佳实践。 Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它...
通过以上步骤,一个简单的Java Socket编程实现的多人聊天室就搭建完成了。这样的系统适合初学者用来学习网络通信的基础知识,包括TCP连接、多线程编程、数据的序列化与反序列化等。通过实际操作,可以帮助理解网络...
简易聊天室 ()">发送 <ul id="chatHistory"></ul> const socket = new WebSocket('ws://localhost:3000'); socket.addEventListener('message', event => { const chatHistory = document....
这在设计聊天室服务器时非常有用,因为服务器需要同时处理来自多个客户端的连接请求和消息发送。 `select`模型的工作原理如下: 1. **初始化**:服务器首先创建一个`socket`,并绑定到特定的IP地址和端口号,然后...
在本文中,我们将深入探讨如何使用Stackless Python来构建一个聊天室服务器,以此来理解其在多任务环境中的优势。 首先,Stackless Python的核心特性之一是它的微线程(microthreads)机制。与标准Python的全局解释...
在这个项目中,我们将深入探讨如何利用TCP/IP协议栈来搭建这样的聊天室,以及涉及到的相关技术点。 首先,TCP(传输控制协议)是互联网协议族中的核心部分,它提供了面向连接的、可靠的数据传输服务。在聊天室应用...
### Linux下基于Socket的简单聊天室系统分析 #### 一、引言 本文将详细介绍一个在Linux环境下构建的简单聊天室系统,该系统利用Socket编程技术实现。文章将围绕其核心功能——网络聊天(包括公共聊天、私人聊天及...
2. "fuwuqi":这个词在中文里是“服务器”的拼音,可能包含服务器端的主逻辑或配置文件,用于启动和运行聊天室服务器。 3. "kehuduan":这是"客户端"的拼音,可能包含了客户端的代码,用户可以通过这个客户端与...
【标题】:“聊天室C#源码”是一个基于C#编程语言实现的聊天室应用程序,其核心功能是利用Socket技术进行网络通信,旨在为开发者提供一个学习网络编程基础的实践平台。 【描述】:该聊天室程序展示了如何使用C#语言...
【标题】: 使用Node.js + Socket.IO构建HTML5实时在线聊天室 在现代Web开发中,实时通信成为了不可或缺的一部分,特别是在构建社交应用、在线游戏或协作工具时。本项目通过结合Node.js和Socket.IO,利用HTML5技术,...
2. **实时通信**:学习如何实现实时通信是搭建聊天室的核心,WebSocket是常用的选择,它提供双向通信,使得客户端和服务器能即时交换数据。 3. **数据库设计**:聊天记录的存储需要合理的数据库设计,可能涉及到...
搭建聊天室是IT技术中一个有趣的实践项目,它涉及到网络通信、服务器管理、实时数据传输等多个方面的知识。在这个过程中,我们需要关注的主要知识点包括以下几个部分: 1. **服务器基础**:首先,你需要有一个运行...
本项目是利用Node.js搭建的WebRTC视频聊天室,用户可以在网页上实现面对面的交流。服务的运行指南可参考README.md文件。 【知识点详解】: 1. WebRTC基础: - WebRTC是一种开源项目,由Google发起,旨在提供...
在多人聊天室中,socket.io负责实现实时通信,当用户发送消息时,服务器会通过socket.io将消息广播给所有在线用户,实现即时聊天功能。 【多人聊天室实现过程】 1. **服务器端**:首先,需要使用Node.js和Express...
三、聊天室服务器端 1. Java服务器开发:可以使用Java的Socket编程实现简单的服务器,监听特定端口,接收来自客户端的连接请求,并处理数据交换。 2. 多线程处理:为了同时处理多个客户端的连接,服务器端通常需要...