`

Java学习 之 Socket(实现简易的C/S聊天室)

阅读更多

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

  

分享到:
评论
1 楼 vitoliao 2016-08-11  
楼主你好,如果你的代码需要实现的是回显功能,需要在MainClient中,while函数之前加入一行代码:
new Thread(new ClientThread(clientSocket)).start();
这样才能启动客户端线程,来显示服务器的回显数据,否则将无任何打印。

相关推荐

    面试作品java c/s聊天室带简单界面

    【标题】"面试作品java c/s聊天室带简单界面"是一个基于Java的客户端/服务器(C/S)架构的聊天应用程序,它集成了图形用户界面(GUI)、套接字通信、文件输入/输出(File IO)以及多线程技术。这个项目展示了开发者...

    java 实现 聊天室功能(C/S)

    Java 实现的C/S(客户端/服务器)架构的聊天室是一种常见的网络通信应用,它基于Socket编程技术,能够实现用户间的实时交流。本项目不仅包含了基本的文本聊天功能,还扩展了其他实用特性,如截屏、文件传输以及字体...

    java实现C/S模式聊天室

    Java实现的C/S模式聊天室是一个典型的网络编程项目,它涉及到多线程、Socket通信、IO流处理以及用户界面设计等多个重要知识点。在这个项目中,我们将深入探讨这些关键概念。 首先,C/S(Client/Server)模式是...

    java课程设计-----c/s模式的聊天室

    在这个项目中,我们将深入探讨如何使用Java语言来实现这样一个C/S模式的聊天室。 1. **C/S架构基础** C/S模式由两部分组成:客户端(Client)和服务器端(Server)。客户端是用户交互的界面,负责数据的展示和用户...

    java多线程基于socket的简易聊天室源代码

    在这个基于Java的简易聊天室源代码中,开发者通过巧妙地结合这两者,实现了客户端与服务器端之间的实时通信。下面将详细解释这些知识点。 首先,让我们来理解多线程。在Java中,多线程允许程序同时执行多个任务,...

    socket简易java聊天室

    通过这个"socket简易java聊天室"项目,初学者可以深入理解Socket通信的基本流程和关键点,同时也能够学习到多线程、异常处理、数据传输格式化等重要编程概念。在实践中不断摸索和优化,将有助于提升个人的Java网络...

    java实现简易聊天室

    Java 实现简易聊天室 本文将对 Java 实现简易聊天室的设计和实现进行详细的分析和讲解。该聊天室程序主要由五个 Java 源文件组成,即 Server.java、Objecting.java、LogIn.java、ClientUser.java 和 Client.java。...

    用Java Socket实现的一个多人聊天的小软件

    本项目“用Java Socket实现的一个多人聊天的小软件”就是一个很好的实践案例,它利用了Java的Socket和Thread类,创建了一个简单的多用户聊天室。下面将详细解释这个项目中的关键知识点。 首先,`Socket`在Java中...

    java C/S聊天程序

    Java C/S聊天程序是一种基于客户端-服务器架构的通信应用,其中C/S代表客户端-服务器模型。在这个程序中,用户可以通过客户端进行登录、注册,并与其他用户进行群聊或私聊。服务器端负责处理客户端的请求,维护用户...

    socket 简易多人聊天室

    本项目"socket 简易多人聊天室"就是一个基于Java Socket技术构建的多用户交互平台,允许多个客户端同时连接到一个服务端进行实时聊天。下面我们将深入探讨相关知识点。 首先,我们来理解Java Socket的基本概念。...

    用swing和socket实现的聊天室

    在本文中,我们将深入探讨如何使用Java Swing、Socket和数据库技术构建一个简易的聊天室应用。这个聊天室实现了群聊、私聊以及好友列表的实时更新功能,为初学者提供了一个很好的学习实例。 首先,Java Swing是Java...

    Java实现简易网络聊天室

    本课题设计主要是采用传统的Client/Server结构来实现自己的聊天室。其实现的主要功能是:用户可以在聊天室中公开发言,也可以发送给某个用户实现两人间的私聊。程序有着自己的聊天服务器和客户端程序。客户端提供...

    Java课程设计(简易聊天室)

    Java课程设计——简易聊天室 在Java编程领域,课程设计是学习过程中不可或缺的一部分,它旨在让学生将所学理论知识应用于实际项目中。本项目“Java课程设计(简易聊天室)”就是一个很好的实践案例,它涵盖了网络...

    java版基于socket的聊天室

    Java版基于Socket的聊天室是一种实现网络通信的基本示例,非常适合初学者理解网络编程和Socket编程的概念。在本文中,我们将深入探讨这个话题,讲解相关的技术知识点。 首先,Socket是网络编程中的一个基本概念,它...

    Java写的简易聊天室

    总结起来,"Java写的简易聊天室"项目涵盖了以下关键知识点: 1. Java的Socket网络编程,包括 `ServerSocket` 和 `Socket` 类。 2. 客户端与服务器之间的连接建立和断开过程。 3. 使用线程处理客户端的并发连接。 4....

    java socket简易聊天室

    使用java编写的类似聊天室的程序,在上次的基础上继续改进,将服务器端的IP地址写在配置文件里面,是程序的使用更加灵活,server.properties文件为配置文件,修改里面的ip地址为服务器端运行的ip地址即可使用。...

    基于Java Socket的简易聊天室

    在这个“基于Java Socket的简易聊天室”项目中,我们将深入探讨如何利用Socket进行TCP(Transmission Control Protocol)编程,构建一个简单的交互式聊天环境。 首先,TCP是一种面向连接的、可靠的传输层协议,它在...

    Java Socket实现简单的聊天程序

    Java Socket实现的简易聊天程序是Java网络编程中的基础应用,主要涉及了客户端(Client)与服务器端(Server)之间的通信。在这个程序中,Socket作为Java提供的API,扮演着连接两端的关键角色,允许双方进行双向数据...

    Java课程设计聊天室

    【Java课程设计聊天室】是Java编程学习中的一个重要实践项目,旨在帮助学生深入理解C/S(客户端/服务器)模式,并熟练运用Java技术实现一个聊天室系统。该系统分为服务器端和客户端两个部分,通过TCP/IP协议进行通信...

    java 简易聊天室源码

    通过分析这个Java简易聊天室源码,我们可以学习到如何使用Java进行网络编程,理解多线程在并发环境中的应用,以及如何构建一个基本的聊天应用程序。此外,还可以深入研究如何优化性能,提高用户体验,以及如何设计...

Global site tag (gtag.js) - Google Analytics