java实现小型局域网群聊功能(C/S模式)

Java实现小型局域网群聊功能(C/S模式)

简介

C/S模式是一种网络通信模式,即客户端(S)与服务端(S)之间的网络通信模式。在这种模式下,客户端发送请求,服务端响应请求,并返回响应结果给客户端。

实现步骤

  1. 创建服务端(Server)和客户端(Client)程序。
  2. 在服务端中创建ServerSocket对象,监听客户端的连接请求。
  3. 客户端连接到服务端。
  4. 服务端接收客户端请求,创建Socket对象,并且与客户端进行通信。
  5. 客户端与服务端建立Socket通信连接,开始通信。
  6. 客户端和服务端进行数据传输。
  7. 服务端接收客户端数据,并转发到其他客户端。
  8. 客户端接收服务端数据,并显示在界面上。

示例

示例1:服务端代码

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {

    public static void main(String[] args) {

        try {
            // 创建ServerSocket监听端口号为6666的请求
            ServerSocket serverSocket = new ServerSocket(6666);
            System.out.println("等待客户端连接...");

            while(true) {
                // 接收客户端请求
                Socket socket = serverSocket.accept();
                // 处理客户端请求
                ServerThread serverThread = new ServerThread(socket);
                serverThread.start();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

示例2:客户端代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class Client {

    public static void main(String[] args) {

        try {
            // 创建Socket对象,连接服务端
            Socket socket = new Socket("localhost", 6666);
            System.out.println("连接服务端成功...");

            // 读取服务端数据,发送数据
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

            while(true) {
                // 读取服务端数据
                String msg = in.readLine();

                // 显示服务端数据
                System.out.println("[收到消息]:" + msg);

                // 发送消息给服务端
                BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
                String input = reader.readLine();
                out.println(input);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }

    }

}

在上面的示例中,服务端代码创建一个ServerSocket对象,监听端口号为6666的请求,然后在无限循环中等待客户端的连接。一旦有客户端连接,就创建一个Socket对象,并且交给一个ServerThread线程进行处理。

客户端代码创建一个Socket对象,连接到服务端的6666端口,并且读取服务端的数据。在无限循环中,可以输入数据并发送给服务端,同时也读取服务端的数据并显示在控制台上。

注意:这是一个简单的示例,实际应用中需要考虑更多的异常情况和安全性问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现小型局域网群聊功能(C/S模式) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 关于Java如何正确地实现方法重载详解

    关于Java如何正确地实现方法重载详解 什么是方法重载? 方法重载(Method Overloading)指的是在一个类中定义多个同名方法,但它们的形式参数列表不同。 方法重载的目的是为了让同名方法能够接收不同类型或者不同数量的参数而有不同的行为,实现更加灵活和通用的功能。 什么条件下才能进行方法重载? 方法名称相同; 参数个数或者类型不同; 方法返回值可以…

    Java 2023年5月19日
    00
  • Java解析Excel文件并把数据存入数据库

    关于如何用Java解析Excel文件并把数据存入数据库,下面提供一份完整的攻略供你参考。 准备工作 在开始操作之前,需要你先准备好以下工具和环境: JDK:Java开发环境。你可以从Oracle官网上下载安装最新版的JDK。 MySQL:数据库系统。你可以根据需要安装在本地或者使用云服务商提供的MySQL服务。 Apache POI:用于操作Excel文件的…

    Java 2023年5月19日
    00
  • Java持久层框架Mybatis入门详细教程

    Java持久层框架Mybatis入门详细教程 什么是Mybatis? Mybatis是一种ORM(Object Relational Mapping)框架,它把数据库操作转换为面向对象编程语言的操作,让我们可以通过调用一个接口即可实现对数据库的CRUD操作,极大地提高了开发的效率。同时,Mybatis还具有可扩展、灵活性高、易于调试等特点,被广泛应用于Jav…

    Java 2023年5月20日
    00
  • 在Java中按值调用和按引用调用

    在Java中,传递参数时有两种方式:按值传递和按引用传递。这两种方式有着不同的使用场景和特点,需要进行深入的探讨。 按值传递 在Java中,按值传递是指将数据(即变量的值)复制一份传递给被调用的方法。修改被传递进方法中的值不会影响调用方法前变量的值。 下面是一个按值传递的例子: public class PassByValueExample { public…

    Java 2023年5月20日
    00
  • 详解SpringBoot配置连接池

    Spring Boot是一个快速创建Web应用程序的框架,它提供了许多便捷的功能和工具,其中包括连接池。连接池是一种管理数据库连接的技术,它可以提高应用程序的性能和可伸缩性。下面是详解Spring Boot配置连接池的完整攻略: 添加依赖项 首先,我们需要在pom.xml文件中添加连接池依赖项。Spring Boot支持多种连接池,包括HikariCP、To…

    Java 2023年5月14日
    00
  • 如何解决多线程安全问题?

    以下是关于如何解决多线程安全问题的完整使用攻略: 如何解决多线程安全问题? 在多线程编程中,为了避免多个线程同时访问共享导致的数据不一致、程序崩溃等问题,需要取相应的措施来解决多线程安全问题。以下是一些常的解决方法: 1. 使用锁机制 锁机制是一种常用的解决多线程安全问题的方法。在多线环境下,使用锁机制可以保证同一时间只有一个线程可以访问共享,从而避免了数据…

    Java 2023年5月12日
    00
  • Java内存溢出的几个区域总结(注意避坑!)

    Java内存溢出的几个区域总结(注意避坑!) 在Java应用程序中,如何管理和控制内存使用是非常重要的。Java虚拟机管理内存的方式不同于C++或其他语言,因为Java虚拟机使用堆区域来分配内存,并且具有垃圾回收机制。然而,这些不同也使得Java应用程序容易遭遇内存溢出错误。在这篇文章中,我们将概述Java中主要的内存区域,如何避免内存泄漏和内存溢出错误。 …

    Java 2023年5月27日
    00
  • Maven 生成打包可执行jar包的方法步骤

    Maven 是一款优秀的项目管理工具,也是开发 Java 项目的标准工具之一,本文将介绍使用 Maven 生成打包可执行 jar 包的方法步骤,具体如下: 步骤一:创建 Maven 项目 在开始之前,先要确保安装了 JDK 和 Maven,然后执行以下命令: mvn archetype:generate -DgroupId=com.mycompany.app…

    Java 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部