java中TCP实现回显服务器及客户端

Java中TCP实现回显服务器及客户端的步骤如下:

1. 编写服务器端程序

服务器端需要完成以下任务:

  1. 创建ServerSocket对象
ServerSocket serverSocket = new ServerSocket(8888);
  1. 监听客户端的连接请求
Socket socket = serverSocket.accept();
  1. 读取客户端发送的数据
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
  1. 回显客户端发送的数据
OutputStream outputStream = socket.getOutputStream();
outputStream.write(buffer, 0, len);
outputStream.flush();

完整代码如下:

public class EchoServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8888);
        System.out.println("EchoServer started.");

        Socket socket = serverSocket.accept();
        System.out.println("Accepted connection.");

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

        OutputStream outputStream = socket.getOutputStream();
        outputStream.write(buffer, 0, len);
        outputStream.flush();

        System.out.println("EchoServer stopped.");
        socket.close();
        serverSocket.close();
    }
}

2. 编写客户端程序

客户端需要完成以下任务:

  1. 创建Socket对象,连接服务器
Socket socket = new Socket("localhost", 8888);
  1. 向服务器发送数据
OutputStream outputStream = socket.getOutputStream();
outputStream.write("Hello, EchoServer!".getBytes());
outputStream.flush();
  1. 读取服务器回显的数据
InputStream inputStream = socket.getInputStream();
byte[] buffer = new byte[1024];
int len = inputStream.read(buffer);
System.out.println("Received message: " + new String(buffer, 0, len));

完整代码如下:

public class EchoClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 8888);

        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("Hello, EchoServer!".getBytes());
        outputStream.flush();
        System.out.println("Sent message: Hello, EchoServer!");

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

        socket.close();
    }
}

3. 示例说明

以下是一个简单的示例,演示了如何使用Java Socket API实现回显服务器:

// EchoServer.java
public class EchoServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8888);
        System.out.println("EchoServer started.");

        Socket socket = serverSocket.accept();
        System.out.println("Accepted connection.");

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

        OutputStream outputStream = socket.getOutputStream();
        outputStream.write(buffer, 0, len);
        outputStream.flush();

        System.out.println("EchoServer stopped.");
        socket.close();
        serverSocket.close();
    }
}
// EchoClient.java
public class EchoClient {
    public static void main(String[] args) throws IOException {
        Socket socket = new Socket("localhost", 8888);

        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("Hello, EchoServer!".getBytes());
        outputStream.flush();
        System.out.println("Sent message: Hello, EchoServer!");

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

        socket.close();
    }
}

运行服务器端程序后,控制台输出如下:

EchoServer started.
Accepted connection.
Received message: Hello, EchoServer!
EchoServer stopped.

运行客户端程序后,控制台输出如下:

Sent message: Hello, EchoServer!
Received message: Hello, EchoServer!

说明服务器端成功地回显了客户端发送的数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java中TCP实现回显服务器及客户端 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • 如何让32位Win7完美使用4G内存的方法介绍

    如何让32位Win7完美使用4G内存的方法介绍 由于32位的Windows 7操作系统默认只能使用3.2GB的内存,如果你想让它完美地使用4GB内存,你可以按照以下步骤进行设置。 步骤一:检查操作系统版本 首先,确保你的Windows 7是32位版本。你可以通过以下步骤来检查: 点击开始菜单,选择“计算机”。 右键点击“计算机”,选择“属性”。 在“系统”窗…

    other 2023年7月28日
    00
  • 物理内存和虚拟内存是什么意思各有什么作用

    物理内存和虚拟内存的作用 物理内存 物理内存是计算机中用于存储数据和程序的硬件设备,也被称为主存或随机存储器(RAM)。它是计算机中最快速的存储介质之一,用于存储正在运行的程序和数据。 物理内存的主要作用包括: 程序执行:物理内存存储了当前正在运行的程序的指令和数据。当程序被加载到物理内存中时,CPU可以直接访问这些指令和数据,从而加快程序的执行速度。 数据…

    other 2023年8月1日
    00
  • android中使用mediarecorder进行录像详解(视频录制)

    Android中使用MediaRecorder进行录像详解(视频录制) 在Android中,可以使用MediaRecorder类进行视频录制。MediaRecorder类提供了许多方法和属性,可以于控制视频录制的参数和状态。本文将介绍Android中使用MediaRecorder进行录像的完整攻略,包括定义、属性、方法两个示例说明。 定义 MediaReco…

    other 2023年5月9日
    00
  • eclipse安装插件的三种方式

    以下是“eclipse安装插件的三种方式的完整攻略”的标准markdown格式文本,其中包含了两个示例说明: Eclipse安装件的三种方式 Eclipse是一款流行的Java集成开发环境,它支持通过插件扩展其功能。本文将介绍Eclipse安装插件的三种方式,包括通过Eclipse Marketplace、通过Update Site和通过本地安装文件,并提供…

    other 2023年5月10日
    00
  • 如何解决win10系统安装KB3097617更新补丁失败后电脑无限重启

    如何解决win10系统安装KB3097617更新补丁失败后电脑无限重启 问题描述 在Windows 10系统中,当尝试安装KB3097617更新补丁时,会出现安装失败的情况,随后系统进入无限重启状态,无法进入操作界面。这是因为该更新补丁引起了系统启动引导程序的错误,导致系统无法正常启动。 解决方法 方法1:使用系统修复工具 准备一台可用电脑和一个U盘; 在可…

    other 2023年6月27日
    00
  • pycharm 设置项目的根目录教程

    PyCharm 是一款非常流行的 Python 集成开发环境(IDE),能够提供方便快捷的编程环境和强大的功能工具,同时支持多种操作系统和版本。其中,设置项目的根目录是一项非常重要的操作,可以决定项目文件的组织方式和路径,对于提高开发效率和管理项目非常有帮助。 下面是 PyCharm 设置项目的根目录教程的完整攻略: 1. 创建新项目并设置根目录 步骤: 在…

    other 2023年6月27日
    00
  • Java由浅入深带你精通继承super

    Java继承与super详解攻略 在Java中,继承是一种强大的面向对象编程的特性之一。它允许子类从父类继承属性和方法,并可在此基础上进行扩展或改进,大大减轻了重复代码的编写和整体程序的维护负担。本文将以“Java由浅入深带你精通继承super”为题,带大家详细讲解Java继承与super的使用方法和技巧。 什么是继承? 在Java中,继承是指一个类从另一个…

    other 2023年6月26日
    00
  • sqlserver数据库distinct的用法

    当然,我很乐意为您提供有关“SQL Server数据库DISTINCT的用法”的完整攻略。以下是详细的步骤和两个示例: 1 SQL Server数据库DISTINCT的用法 在SQL Server数据库中,DISTINCT是一种用于去除重复值的关键字。它可以用于SELECT语句中,以便只返回不同的值。 2 使用DISTINCT关键字 以下是使用DISTINC…

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