1.服务器端
1.1 服务器启动入口:
package com.server;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class MainServer {
public static ArrayList<Socket> socketList = new ArrayList<Socket>();
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(30000);
while (true) {
System.out.println("等待客户端的访问... ...");
Socket socket = serverSocket.accept();
socketList.add(socket);
new Thread(new ServerThread(socket)).start();
}
}
}
1.2 服务器线程:
package com.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class ServerThread implements Runnable {
Socket socket = null;
BufferedReader bufferedReader = null;
public ServerThread(Socket socket) throws IOException {
this.socket = socket;
bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
}
@Override
public void run() {
String content = null;
try {
while((content = readFromClient()) != null){
for (Socket socket:MainServer.socketList) {
PrintStream printStream = new PrintStream(socket.getOutputStream());
printStream.println("来自客户端:"+content);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
private String readFromClient(){
try {
return bufferedReader.readLine();
} catch (IOException e) {
MainServer.socketList.remove(socket);
}
return null;
}
}
2.客户端
2.1 客户端主入口:
package com.client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
public class MainClient {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket clientSocket = new Socket("127.0.0.1", 30000);
PrintStream printStream = new PrintStream(clientSocket.getOutputStream());
String line = null;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
while ((line = bufferedReader.readLine()) != null) {
printStream.println(line);
}
}
}
2.2 客户端线程:
package com.client;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
public class ClientThread implements Runnable {
private Socket socket;
BufferedReader bufferedReader = null;
public ClientThread(Socket socket) throws IOException{
this.socket = socket;
bufferedReader = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
}
@Override
public void run() {
String conString = null;
try {
while ((conString = bufferedReader.readLine()) != null) {
System.out.println("来自服务器的广播:"+conString);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
【标题】"面试作品java c/s聊天室带简单界面"是一个基于Java的客户端/服务器(C/S)架构的聊天应用程序,它集成了图形用户界面(GUI)、套接字通信、文件输入/输出(File IO)以及多线程技术。这个项目展示了开发者...
Java 实现的C/S(客户端/服务器)架构的聊天室是一种常见的网络通信应用,它基于Socket编程技术,能够实现用户间的实时交流。本项目不仅包含了基本的文本聊天功能,还扩展了其他实用特性,如截屏、文件传输以及字体...
Java实现的C/S模式聊天室是一个典型的网络编程项目,它涉及到多线程、Socket通信、IO流处理以及用户界面设计等多个重要知识点。在这个项目中,我们将深入探讨这些关键概念。 首先,C/S(Client/Server)模式是...
在这个项目中,我们将深入探讨如何使用Java语言来实现这样一个C/S模式的聊天室。 1. **C/S架构基础** C/S模式由两部分组成:客户端(Client)和服务器端(Server)。客户端是用户交互的界面,负责数据的展示和用户...
在这个基于Java的简易聊天室源代码中,开发者通过巧妙地结合这两者,实现了客户端与服务器端之间的实时通信。下面将详细解释这些知识点。 首先,让我们来理解多线程。在Java中,多线程允许程序同时执行多个任务,...
通过这个"socket简易java聊天室"项目,初学者可以深入理解Socket通信的基本流程和关键点,同时也能够学习到多线程、异常处理、数据传输格式化等重要编程概念。在实践中不断摸索和优化,将有助于提升个人的Java网络...
Java 实现简易聊天室 本文将对 Java 实现简易聊天室的设计和实现进行详细的分析和讲解。该聊天室程序主要由五个 Java 源文件组成,即 Server.java、Objecting.java、LogIn.java、ClientUser.java 和 Client.java。...
本项目“用Java Socket实现的一个多人聊天的小软件”就是一个很好的实践案例,它利用了Java的Socket和Thread类,创建了一个简单的多用户聊天室。下面将详细解释这个项目中的关键知识点。 首先,`Socket`在Java中...
Java C/S聊天程序是一种基于客户端-服务器架构的通信应用,其中C/S代表客户端-服务器模型。在这个程序中,用户可以通过客户端进行登录、注册,并与其他用户进行群聊或私聊。服务器端负责处理客户端的请求,维护用户...
本项目"socket 简易多人聊天室"就是一个基于Java Socket技术构建的多用户交互平台,允许多个客户端同时连接到一个服务端进行实时聊天。下面我们将深入探讨相关知识点。 首先,我们来理解Java Socket的基本概念。...
在本文中,我们将深入探讨如何使用Java Swing、Socket和数据库技术构建一个简易的聊天室应用。这个聊天室实现了群聊、私聊以及好友列表的实时更新功能,为初学者提供了一个很好的学习实例。 首先,Java Swing是Java...
本课题设计主要是采用传统的Client/Server结构来实现自己的聊天室。其实现的主要功能是:用户可以在聊天室中公开发言,也可以发送给某个用户实现两人间的私聊。程序有着自己的聊天服务器和客户端程序。客户端提供...
Java课程设计——简易聊天室 在Java编程领域,课程设计是学习过程中不可或缺的一部分,它旨在让学生将所学理论知识应用于实际项目中。本项目“Java课程设计(简易聊天室)”就是一个很好的实践案例,它涵盖了网络...
Java版基于Socket的聊天室是一种实现网络通信的基本示例,非常适合初学者理解网络编程和Socket编程的概念。在本文中,我们将深入探讨这个话题,讲解相关的技术知识点。 首先,Socket是网络编程中的一个基本概念,它...
总结起来,"Java写的简易聊天室"项目涵盖了以下关键知识点: 1. Java的Socket网络编程,包括 `ServerSocket` 和 `Socket` 类。 2. 客户端与服务器之间的连接建立和断开过程。 3. 使用线程处理客户端的并发连接。 4....
使用java编写的类似聊天室的程序,在上次的基础上继续改进,将服务器端的IP地址写在配置文件里面,是程序的使用更加灵活,server.properties文件为配置文件,修改里面的ip地址为服务器端运行的ip地址即可使用。...
在这个“基于Java Socket的简易聊天室”项目中,我们将深入探讨如何利用Socket进行TCP(Transmission Control Protocol)编程,构建一个简单的交互式聊天环境。 首先,TCP是一种面向连接的、可靠的传输层协议,它在...
Java Socket实现的简易聊天程序是Java网络编程中的基础应用,主要涉及了客户端(Client)与服务器端(Server)之间的通信。在这个程序中,Socket作为Java提供的API,扮演着连接两端的关键角色,允许双方进行双向数据...
【Java课程设计聊天室】是Java编程学习中的一个重要实践项目,旨在帮助学生深入理解C/S(客户端/服务器)模式,并熟练运用Java技术实现一个聊天室系统。该系统分为服务器端和客户端两个部分,通过TCP/IP协议进行通信...
通过分析这个Java简易聊天室源码,我们可以学习到如何使用Java进行网络编程,理解多线程在并发环境中的应用,以及如何构建一个基本的聊天应用程序。此外,还可以深入研究如何优化性能,提高用户体验,以及如何设计...