如何在Java中使用Socket编程实现TCP连接?

本文涉及的产品
资源编排,不限时长
无影云电脑个人版,黄金款:40核时/1个月有效
无影云电脑企业版,4核8GB 120小时 1个月
简介: 在Java中,通过Socket编程实现TCP连接非常常见。以下演示了基本的TCP通信流程,可根据具体需求进行扩展。

在 Java 中,使用 Socket 编程实现 TCP 连接是一种常见的场景。我将为你提供一个简单的示例,展示如何创建一个基本的 TCP 服务器和客户端。

首先,让我们看一下如何实现一个简单的 TCP 服务器:

Java

import java.io.*;
import java.net.*;
public class SocketServerExample {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        int port = 9876; // 服务器监听的端口号
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("服务器正在监听端口 " + port);
            while (true) {
                Socket socket = serverSocket.accept(); // 等待客户端连接
                System.out.println("新客户端已连接");
                // 从 socket 获取输入流
                ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
                String message = (String) ois.readObject();
                System.out.println("收到客户端消息: " + message);
                // 创建输出流并发送响应消息
                ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
                oos.writeObject("Hi Client " + message);
                // 关闭资源
                ois.close();
                oos.close();
                socket.close();
                // 如果客户端发送了 "exit" 请求,终止服务器
                if (message.equalsIgnoreCase("exit")) {
                    break;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


接下来,我们看一下如何实现一个简单的 TCP 客户端:

Java

import java.io.*;
import java.net.*;
public class SocketClientExample {
    public static void main(String[] args) throws UnknownHostException, IOException, ClassNotFoundException {
        String serverAddress = "localhost"; // 服务器地址
        int serverPort = 9876; // 服务器端口号
        Socket socket = new Socket(serverAddress, serverPort);
        System.out.println("已连接到服务器");
        // 创建输入流和输出流
        ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
        oos.writeObject("Hello from client");
        // 从服务器接收响应
        ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
        String response = (String) ois.readObject();
        System.out.println("服务器响应: " + response);
        // 关闭资源
        oos.close();
        ois.close();
        socket.close();
    }
}


这两个示例展示了一个简单的 TCP 服务器和客户端之间的通信。你可以根据自己的需求扩展这些代码,添加更复杂的业务逻辑。

相关文章
|
27天前
|
存储 SQL 分布式计算
Java连接阿里云MaxCompute例
要使用Java连接阿里云MaxCompute数据库,首先需在项目中添加MaxCompute JDBC驱动依赖,推荐通过Maven管理。避免在代码中直接写入AccessKey,应使用环境变量或配置文件安全存储。示例代码展示了如何注册驱动、建立连接及执行SQL查询。建议使用RAM用户提升安全性,并根据需要配置时区和公网访问权限。具体步骤和注意事项请参考阿里云官方文档。
|
2月前
|
SQL Java 数据库连接
Java开发者必知:JDBC连接数据库的“三大法宝”
Java开发者必知:JDBC连接数据库的“三大法宝”
18 7
|
7天前
|
关系型数据库 MySQL 数据库
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
docker启动mysql多实例连接报错Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’
29 0
|
2月前
|
安全 Java 关系型数据库
Java连接Mysql SSL初始化失败
Java连接Mysql SSL初始化失败
|
2月前
|
缓存 NoSQL 网络协议
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
【Azure Redis 缓存】Redisson 连接 Azure Redis出现间歇性 java.net.UnknownHostException 异常
|
2月前
|
SQL Java 数据库连接
java连接数据库加载驱动到java项目
该博客文章介绍了如何在Java项目中通过代码加载数据库驱动并连接SQL Server数据库,包括具体的加载驱动和建立数据库连接的步骤,以及如何将驱动包添加到Java项目的构建路径中。
|
2月前
|
Java API 开发者
|
2月前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
2月前
|
存储 Java 开发工具
【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint连接Blob Service遇见 The Azure Storage endpoint url is malformed
【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint连接Blob Service遇见 The Azure Storage endpoint url is malformed
|
2月前
|
Java 网络安全 开发工具
新手入门Java。如何下载Eclipse、写出最基本的“Hello word”以及如何连接github并且上传项目。
新手入门Java。如何下载Eclipse、写出最基本的“Hello word”以及如何连接github并且上传项目。
41 0
下一篇
无影云桌面