java网络通信技术之简单聊天小程序

这里是关于“Java网络通信技术之简单聊天小程序”的完整攻略。

简介

本篇攻略将为大家介绍如何使用Java网络通信技术开发简单聊天小程序。

聊天小程序主要由客户端和服务端两个部分组成,它们之间通过网络通信进行交互。在Java中,可以使用Socket实现网络通信。

下面我们将由客户端和服务端两个方面详细讲解。

客户端

客户端主要负责向服务端发送信息,并接收服务端的返回信息。

首先,客户端需要创建一个Socket对象,指定服务器IP地址和端口号:

Socket socket = new Socket("127.0.0.1", 8888);

通过这个Socket对象,我们就可以向服务器发送信息:

OutputStream os = socket.getOutputStream();
String message = "Hello Server!";
os.write(message.getBytes());

同样,客户端也可以通过Socket对象接收服务端返回的信息:

InputStream is = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = is.read(buffer);
String message = new String(buffer, 0, length);
System.out.println("Received message: " + message);

服务端

服务端主要负责接收客户端发送来的信息,并向客户端返回信息。

服务端需要创建一个ServerSocket对象,并指定端口号:

ServerSocket serverSocket = new ServerSocket(8888);

服务端可以通过ServerSocket对象接收客户端的连接请求:

Socket socket = serverSocket.accept();

一旦服务端接收到客户端的连接请求,就可以通过Socket对象接收客户端发送过来的信息:

InputStream is = socket.getInputStream();
byte[] buffer = new byte[1024];
int length = is.read(buffer);
String message = new String(buffer, 0, length);
System.out.println("Received message: " + message);

服务端也可以通过Socket对象向客户端发送信息:

OutputStream os = socket.getOutputStream();
String message = "Hello Client!";
os.write(message.getBytes());

示例说明

下面给出两个代码示例来帮助理解:

示例一

客户端

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws Exception {
        Socket socket = new Socket("127.0.0.1", 8888);
        OutputStream os = socket.getOutputStream();
        String message = "Hello Server!";
        os.write(message.getBytes());

        InputStream is = socket.getInputStream();
        byte[] buffer = new byte[1024];
        int length = is.read(buffer);
        String response = new String(buffer, 0, length);
        System.out.println("Received message from server: " + response);

        socket.close();
    }
}

服务端

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(8888);

        Socket socket = serverSocket.accept();

        InputStream is = socket.getInputStream();
        byte[] buffer = new byte[1024];
        int length = is.read(buffer);
        String message = new String(buffer, 0, length);
        System.out.println("Received message from client: " + message);

        OutputStream os = socket.getOutputStream();
        String response = "Hello Client!";
        os.write(response.getBytes());

        socket.close();
        serverSocket.close();
    }
}

示例二

客户端

import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

public class Client {
    public static void main(String[] args) throws Exception {
        Socket socket = new Socket("127.0.0.1", 8888);
        OutputStream os = socket.getOutputStream();
        String message = "How are you?";
        os.write(message.getBytes());

        InputStream is = socket.getInputStream();
        byte[] buffer = new byte[1024];
        int length = is.read(buffer);
        String response = new String(buffer, 0, length);
        System.out.println("Received message from server: " + response);

        socket.close();
    }
}

服务端

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(8888);

        Socket socket = serverSocket.accept();

        InputStream is = socket.getInputStream();
        byte[] buffer = new byte[1024];
        int length = is.read(buffer);
        String message = new String(buffer, 0, length);
        System.out.println("Received message from client: " + message);

        OutputStream os = socket.getOutputStream();
        String response = "I'm fine!";
        os.write(response.getBytes());

        socket.close();
        serverSocket.close();
    }
}

以上就是关于Java网络通信技术之简单聊天小程序的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java网络通信技术之简单聊天小程序 - Python技术站

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

相关文章

  • SpringBoot基于数据库实现定时任务过程解析

    下面是关于“Spring Boot基于数据库实现定时任务过程解析”的完整攻略。 1. 背景 定时任务在业务逻辑中经常被使用,而且很多时候任务调度需要依赖于数据库中的数据。Spring Boot中提供了很方便的方式来实现定时任务的功能,而且也支持基于数据库的方式来实现任务调度,本文将详细讲解如何使用Spring Boot实现基于数据库的定时任务调度。 2. 实…

    Java 2023年5月26日
    00
  • 用简单的代码来实现文件上传

    让我来详细讲解一下“用简单的代码来实现文件上传”的完整攻略。 什么是文件上传? 在网站开发中,文件上传就是指用户将本地的文件通过网站上传到服务器中。 实现文件上传的原理 实现文件上传,需要配合HTTP协议,主要分为以下几步: 用户通过网页上传文件,前端通过HTML5的FormData对象将文件数据以二进制流的形式传递到后端。 后端接收到上传的文件数据后,将文…

    Java 2023年6月15日
    00
  • SpringBoot+MySQL+Jpa实现对数据库的增删改查和分页详解

    前置知识: 在学习本篇攻略之前,需要熟悉如下知识: SpringBoot: 一款基于Spring框架的快速开发脚手架工具,可以快速创建Spring应用 MySQL: 一款流行的关系型数据库 JPA: Java持久化API,是一套标准的ORM框架 步骤: 1.配置MySQL数据库 首先需要进行mysql数据库的安装和配置。这里不再赘述,建议在官网上进行下载和安…

    Java 2023年5月20日
    00
  • Java线程实现时间动态显示

    Java线程实现动态时间显示可以通过以下步骤完成: 1.创建一个实现了Runnable接口的类,在该类中实现线程的逻辑。 2.在逻辑中使用Java提供的日期时间类(如LocalDateTime)获取当前时间,并将其格式化为需要显示的格式(如HH:mm:ss)。 3.将格式化后的时间打印输出到控制台或其他输出流。 4.使用Thread类创建线程实例,并调用st…

    Java 2023年5月18日
    00
  • javascript获取四位数字或者字母的随机数

    当我们需要生成随机数时,可以使用JavaScript提供的Math.random()方法,并对其进行处理,可以生成指定范围内的随机数字或字母。以下是获取四位数字或字母随机数的完整攻略。 第一步:生成一个随机数 使用JavaScript内置的Math.random()方法可以生成一个0到1之间的随机小数。 const randomNumber = Math.r…

    Java 2023年6月15日
    00
  • Java调用.dll文件的方法

    下面是Java调用.dll文件的方法的完整攻略: 1. 加载.dll文件 Java调用.dll文件时需要用到Java Native Interface(JNI),这是Java调用本地代码的一种机制。要想调用.dll文件,需要先加载它。在JNI中,可以通过System类的loadLibrary()方法来加载.dll文件。loadLibrary()方法的参数为.…

    Java 2023年5月19日
    00
  • 分享java打印简单图形的实现代码

    下面是分享Java打印简单图形的实现代码的完整攻略: 准备工作 在开始之前,我们需要进行一些准备工作。首先,我们需要具备一定的Java基础知识,如循环、条件语句、方法的定义和调用等。其次,我们需要了解一些控制台输出相关的知识,如System.out.print()和System.out.println()的使用方法等。 实现代码 下面是Java打印简单图形的…

    Java 2023年5月23日
    00
  • Spring Security 基于URL的权限判断源码解析

    下面我来详细讲解“Spring Security 基于URL的权限判断源码解析”的完整攻略。 1. 前置知识准备 在深入了解 Spring Security 基于 URL 权限判断的源码之前,我们需要先对以下概念有所了解: 身份验证(Authentication):验证用户的身份,通常需要用户提供用户名和密码等身份凭证。 授权(Authorization):…

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