栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【Java实战】网络聊天室 (一) 简单实现用户发消息给后台管理员

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java实战】网络聊天室 (一) 简单实现用户发消息给后台管理员

笔者: unirithe
日期:11/19/2021

下一篇:【Java实战】网络聊天室 (二) 实现管理员反馈信息给用户 | 引用多线程机制 | 添加注册登陆功能

文章目录
  • 运行环境
  • 实现效果
  • 1. 知识面概要
    • 1.1 网络协议
    • 1.2 套接字
    • 1.3 IO流
  • 2. 实现代码

运行环境
  • JDK 1.8
  • IDEA
实现效果

用户发消息:

后台接收到消息:

1. 知识面概要

参考博文:Java学习笔记@网络编程

  • Java IO流处理java.io.*
  • Java 网络编程 java.net.*

网络通信三要素:IP地址、端口、网络协议

  • IP地址:IP全称为Internet Protocol,即互联网协议地址,指设备在网络中 的地址、唯一标识
  • 端口:应用程序在设备中的唯一标识
  • 网络协议:数据在网络中传输的规则,常见的有TCP协议和UDP协议
1.1 网络协议

TCP协议特点:面向连接的可靠通信协议、支持大数据量传输,三次握手连接,四次挥手断开连接,但通信效率低

UDP协议特点:无连接,不可靠,可广播

本次案例中TCP协议建立连接的示意图如下:

1.2 套接字

在网络上,套接字是连接两个需要通信的程序的一个抽象概念
在Java语言中,套接字是实现两个Java程序通信的一个类,可以理解成一个管道,负责两端的通信

1.3 IO流

参考资料: Java学习笔记@IO流知识梳理与部分源码解读

IO流 即 Input / Output Stream,用于设备之间的数据传输

常见的有 System.out.println() 就是通过流处理而打印到控制台

本次案例用到的IO流处理如下:

2. 实现代码

Server.java 负责实现后台管理员接收消息
Client.java 负责实现用户发消息

测试时,请记得先开启 Server ,再开启 Client

Server.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
        System.out.println("服务端启动");
        int port = 6666;                                     // 连接端口号
        ServerSocket serverSocket = new ServerSocket(port);  // 建立连接管道
        while(true) {
            // 等待连接
            Socket accept = serverSocket.accept();
            // 来自客户端的字节输入流 -> 输入转换流 -> 字符缓冲输入流
            BufferedReader r = new BufferedReader(
                    new InputStreamReader(
                            accept.getInputStream()
                    )
            );
            // 读取消息
            String message;
            while((message = r.readLine()) != null)
                System.out.println("收到: " + message);
        }
    }
}

Client.java

import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;

public class Client {
    public static void main(String[] args) throws IOException {
        System.out.println("客户端启动");
        // 建立连接管道
        Socket socket = new Socket("localhost", 6666);
        // 控制台输入 -> 输出打印流(包含输出转换流和字符缓冲输出流)
        PrintStream p = new PrintStream(socket.getOutputStream());
        // 控制台输入
        Scanner in = new Scanner(System.in);
        while(true){
            System.out.print("发送: ");
            p.println(in.nextLine());
        }
    }
}

至此,基于IO流处理和网络编程的网络聊天室第一步已完成 ,下次步骤将在本次的基础上进行更新。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/571648.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号