java TCP UDP 客户端访问例子和对比差异

Java TCP客户端示例

java 复制代码
import java.io.*;
import java.net.*;

public class TCPClient {
    public static void main(String[] args) {
        try (
            Socket socket = new Socket("localhost", 12345);  // 连接服务端
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))
        ) {
            // 发送数据
            out.println("Hello TCP Server!");
            
            // 接收响应
            String response = in.readLine();
            System.out.println("Server response: " + response);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Java UDP客户端示例

java 复制代码
import java.net.*;

public class UDPClient {
    public static void main(String[] args) {
        try (DatagramSocket socket = new DatagramSocket()) {
            // 发送数据
            String message = "Hello UDP Server!";
            byte[] buffer = message.getBytes();
            InetAddress address = InetAddress.getByName("localhost");
            int port = 54321;
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, port);
            socket.send(packet);
            
            // 接收响应(可选)
            byte[] receiveBuffer = new byte[1024];
            DatagramPacket receivePacket = new DatagramPacket(receiveBuffer, receiveBuffer.length);
            socket.receive(receivePacket);
            System.out.println("Server response: " + new String(receivePacket.getData()));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

TCP与UDP对比表格

特性 TCP UDP
连接方式 面向连接(三次握手) 无连接
可靠性 可靠(数据不丢失/重复/乱序) 不可靠(可能丢失/重复/乱序)
顺序保证 保证数据顺序 不保证
速度 较慢(握手/流量控制开销) 快(无连接管理开销)
头部大小 20-60字节 8字节
流量控制 有(自动调整发送速率)
延迟 较高(需确认机制)
应用场景 文件传输、HTTP/HTTPS、Email 视频通话、在线游戏、实时监控

关键差异总结

场景 TCP推荐 UDP推荐
数据完整性要求高 ✔️(如文件下载) ❌(可能丢失数据)
实时性要求高 ❌(延迟较高) ✔️(如游戏心跳包)
大量小数据包 ❌(开销大) ✔️(如传感器数据上报)
需要端到端控制 ✔️(重传/拥塞控制) ❌(需自行实现)
相关推荐
咩咩啃树皮5 小时前
第40篇:Vue3组件化开发精讲——组件拆分、复用、父子通信、工程化架构
java·前端·架构
鱟鲥鳚5 小时前
Spring Boot 集成 LangChain4j:从模型调用到 Tool Calling(Demo版)
java·spring boot
大模型码小白6 小时前
【Python零基础教程】继承、多态与魔法函数:面向对象编程三大核心特性详解
java·大数据·开发语言·人工智能·python·ai编程
腾渊信息科技公司7 小时前
Spring Boot对接MES实战:视觉检测数据自动同步方案
java·人工智能·spring boot·后端·计算机视觉·ai·软件需求
爱笑的源码基地8 小时前
高并发 Redis 缓存门诊HIS系统源码,含财务统计药房进销存
java·程序·门诊系统·诊所系统·云诊所源码
wuqingshun3141598 小时前
TCP超时重传机制是为了解决什么问题?
java
莫逸风11 小时前
【AgentScope 2.0】 0. 学习指南
java·llm·agent·agentscope
z1234567898611 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
yaoxin52112312 小时前
470. Java 反射 - Member 接口与 AccessFlag
java·开发语言·python
做个文艺程序员12 小时前
Linux第24篇:Java应用监控体系搭建:Prometheus+Grafana可视化运维
java·grafana·prometheus