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

yizhihongxing

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日

相关文章

  • 整理Linux中字符串的相关操作技巧

    下面是“整理Linux中字符串的相关操作技巧”的完整攻略。 1. 使用字符串相关命令 Linux中有很多字符串相关的命令可以使用,例如echo,grep,awk,sed,cut等等。这些命令都可以用于处理字符串。 echo命令 echo命令用于输出字符串,可以用于将字符串输出到终端或者输出到文件。 例如,下面的命令将字符串“Hello World”输出到终端…

    other 2023年6月20日
    00
  • win10系统总安装更新KB3140768补丁后无限重启该怎么办?

    针对“win10系统总安装更新KB3140768补丁后无限重启该怎么办?”这个问题,我为你提供以下完整攻略: 问题诊断 首先,我们需要了解问题的具体情况和原因。问题表现为安装更新KB3140768补丁后,Windows 10系统无限重启,可能是由于补丁安装失败或补丁文件损坏导致的。因此,我们需要对系统进行诊断和修复。 进入安全模式因为系统无限重启,无法进入正…

    other 2023年6月27日
    00
  • php验证邮箱和ip地址最简单方法汇总

    PHP验证邮箱和IP地址最简单方法汇总攻略 在PHP中,验证邮箱和IP地址是常见的任务。下面是验证邮箱和IP地址的最简单方法的汇总攻略。 验证邮箱 验证邮箱的方法可以使用正则表达式来匹配邮箱的格式。以下是一个示例代码: $email = \"example@example.com\"; if (filter_var($email, FIL…

    other 2023年7月30日
    00
  • SpringBoot使用Druid数据源的配置方法

    下面我将为大家详细讲解使用Spring Boot配置Druid数据源的方法。 1. 引入Druid和JDBC驱动 首先,我们需要在maven中引入druid和JDBC驱动的相关依赖,可以根据实际需求进行版本选择。在pom.xml文件中添加以下依赖: <dependency> <groupId>com.alibaba</group…

    other 2023年6月27日
    00
  • 最全面的Android Studio使用教程(图文)

    很抱歉,作为一个文本模型,我无法提供完整的图文教程。然而,我可以为您提供一些关于Android Studio使用的基本指导和示例说明。请注意,以下内容是以纯文本形式提供的,没有图像或图文。 Android Studio使用教程 1. 安装Android Studio 首先,您需要下载并安装Android Studio。您可以从官方网站上下载适用于您的操作系统…

    other 2023年7月27日
    00
  • ARM Cortex-M 系列 MCU 错误追踪库 心得

    ARM Cortex-M 系列 MCU 错误追踪库 ARM Cortex-M 系列 MCU 错误追踪库是一种用于调试和错误追踪的工具,可以帮助开发人员快速定位和解决程序中的错误。本文将详细讲解 ARM Cortex-M 系列 MCU 错误追踪库的使用方法和心得,包括两个示例说明。 错误追踪库的作用 错误追踪库的作用是帮助开发人员快速定位和解决程序中的错误。错…

    other 2023年5月5日
    00
  • 详解Windows Server 2008十大最新特性

    这里是关于“详解Windows Server 2008十大最新特性”的完整攻略: 详解Windows Server 2008十大最新特性 1. Server Core Windows Server 2008的Server Core是一种特殊的安装配置,只包含安装和运行所需的最小系统组件。这个特性有很多优点,例如安全性更高,攻击面更小等。通过Server Co…

    other 2023年6月27日
    00
  • Endnote怎么关闭区分大小写功能?Endnote关闭区分大小写方法

    要关闭Endnote的区分大小写功能,您可以按照以下步骤进行操作: 打开Endnote软件并选择您要关闭区分大小写功能的文档。 在菜单栏中,点击\”Edit\”(编辑)选项。 在下拉菜单中,选择\”Preferences\”(首选项)。 在弹出的首选项窗口中,选择\”Reference Types\”(参考类型)选项卡。 在参考类型列表中,选择您想要关闭区分…

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