Java 基础教程

Java 面向对象

Java 高级教程

Java 笔记

Java FAQ

java tcp发送报文


在 Java 中使用 TCP 发送报文有多种实现方式。以下是其中几种常见的方式以及它们的详细步骤流程和示例代码。我将使用简单的文本消息发送作为示例,但你可以根据需要进行更复杂的定制。

使用 Socket

Socket 是 Java 提供的标准库,用于实现基于网络的通信。下面是使用 Socket 发送 TCP 报文的步骤:

步骤流程:

  1. 创建一个 Socket 对象并连接到目标主机和端口。
  2. 获取输入输出流以进行数据传输。
  3. 发送数据。
  4. 关闭连接。

示例代码:

import java.io.*;
import java.net.*;

public class SocketSender {
    public static void main(String[] args) {
        String host = "localhost"; // 目标主机
        int port = 12345;          // 目标端口

        try (Socket socket = new Socket(host, port)) {
            // 获取输出流
            OutputStream outputStream = socket.getOutputStream();
            PrintWriter writer = new PrintWriter(outputStream, true);

            // 发送数据
            String message = "Hello, TCP!";
            writer.println(message);

            // 关闭连接
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

使用 Java NIO(New I/O)

Java NIO 提供了一种非阻塞的 I/O 模型,可以用于更高效的网络通信。下面是使用 Java NIO 发送 TCP 报文的步骤:

步骤流程:

  1. 创建一个 SocketChannel,并连接到目标主机和端口。
  2. 创建 ByteBuffer 并将数据写入其中。
  3. 将 ByteBuffer 写入 SocketChannel。
  4. 关闭连接。

示例代码:

import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.ByteBuffer;
import java.nio.channels.SocketChannel;

public class NIOSender {
    public static void main(String[] args) {
        String host = "localhost"; // 目标主机
        int port = 12345;          // 目标端口

        try {
            // 创建 SocketChannel
            SocketChannel socketChannel = SocketChannel.open();
            socketChannel.connect(new InetSocketAddress(host, port));

            // 发送数据
            String message = "Hello, NIO!";
            ByteBuffer buffer = ByteBuffer.wrap(message.getBytes());
            socketChannel.write(buffer);

            // 关闭连接
            socketChannel.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

依赖坐标

这两种方式都是使用 Java 标准库,不需要额外的依赖。

请注意,以上示例代码仅为演示基本原理。在实际应用中,你需要处理异常、添加更多的错误处理逻辑以及适应你的具体业务需求。

在Java中实现TCP长连接有多种方式,下面我将为你详细介绍两种常见的方式:Socket和Netty。示例代码:服务器端:服务器处理器:客户 ...
在Java中,使用UDP(UserDatagramProtocol)发送和接收数据是一种非连接、无状态的网络通信方式。###方式一:使用纯J ...
基于 Web 的应用程序通常需要具有向用户/客户端发送邮件的功能。Flask-Mail 扩展使得用任何电子邮件服务器设置一个简单接口变得非常 ...
下面我将介绍几种不同的方式来实现JavaUDP广播的接收和发送,包括步骤流程和示例代码。###使用Java的原生Socket类实现UDP广播 ...
Java 没有内置的字符串类型,而是在标准 Java 类库中提供了一个预定义类,很自然地叫做 String。每个用双引号括起来的字符串都是 ...