当前位置: 首页 > article >正文

Java网络编程 TCP通信(Socket 与 ServerSocket)

1.TCP通信原理

TCP通信涉及两个端点:客户端和服务器。服务器端使用 ServerSocket 监听特定端口,等待客户端的连接请求。客户端使用 Socket 连接到服务器的IP地址和端口。一旦连接建立,双方就可以通过输入输出流进行数据交换.

ServerSocket是等待客户端的请求,一旦获得一个连接请求,就创建一个Socket示例来与客户端进行通信。 

2.Socket和ServerSocket

ServerSocket

ServerSocket 类用于服务器端,用于监听来自客户端的连接请求。以下是创建 ServerSocket 的基本步骤:

  1. 创建 ServerSocket 实例并指定端口号。
  2. 调用 accept() 方法等待客户端连接。
  3. 接收客户端的 Socket 对象。
  4. 使用输入输出流与客户端进行通信。

Socket

Socket 类用于客户端,用于连接到服务器并发送/接收数据。以下是使用 Socket 的基本步骤:

  1. 创建 Socket 实例并指定服务器的IP地址和端口号。
  2. 连接到服务器。
  3. 使用输入输出流发送和接收数据。
  4. 关闭连接。

 3.演示

服务器端代码

public class TcpServer {
    public static void main(String[] args) {
        int port = 12345;
        try (ServerSocket serverSocket = new ServerSocket(port)) {
            System.out.println("服务器启动,等待客户端连接...");

            Socket clientSocket = serverSocket.accept();
            System.out.println("客户端已连接");

            InputStream input = clientSocket.getInputStream();
            OutputStream output = clientSocket.getOutputStream();

            // 读取客户端发送的数据
            byte[] buffer = new byte[1024];
            int bytesRead = input.read(buffer);
            System.out.println("来自客户端的消息: " + new String(buffer, 0, bytesRead));

            // 向客户端发送响应
            output.write("服务器已收到消息".getBytes());
            output.flush();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端代码

public class TcpClient {
    public static void main(String[] args) {
        String host = "127.0.0.1";
        int port = 12345;
        try (Socket socket = new Socket(host, port)) {
            System.out.println("连接到服务器...");

            OutputStream output = socket.getOutputStream();
            String message = "你好,服务器!";
            output.write(message.getBytes());
            output.flush();

            System.out.println("消息已发送");

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

TCP通信的基本概念

  1. 面向连接:TCP通信在数据传输之前需要建立连接,通过三次握手过程。
  2. 可靠性:TCP通过序列号、确认应答、重传机制等确保数据的可靠传输。
  3. 流量控制:TCP使用窗口机制来控制发送方的发送速率,防止接收方来不及处理。
  4. 拥塞控制:TCP通过慢启动、拥塞避免、快速重传和快速恢复等算法来控制网络拥塞。

TCP和UDP的比较

  1. 连接性:TCP是面向连接的,而UDP是无连接的。
  2. 速度:TCP由于需要建立连接和保证数据完整性,速度较慢;UDP速度快,但可靠性较低。
  3. 适用场景:TCP适用于需要可靠传输的场景,如文件传输、邮件传输等;UDP适用于对速度要求高的场景,如实时视频、在线游戏等。

Java中的TCP通信

  1. ServerSocket:服务器端使用ServerSocket来监听客户端的连接请求。
  2. Socket:客户端使用Socket来连接服务器,并进行数据传输。
  3. 输入输出流Socket提供输入流和输出流来进行数据的读取和发送。
  4. 多线程:为了同时处理多个客户端,服务器端通常需要使用多线程。

TCP通信的典型应用

  1. Web服务器:HTTP协议基于TCP,用于客户端和服务器之间的数据传输。
  2. 数据库连接:数据库客户端通过TCP与服务器进行通信。
  3. 文件传输:FTP(文件传输协议)使用TCP来保证文件传输的可靠性。

TCP编程的注意事项

  1. 异常处理:网络编程中需要妥善处理各种网络异常。
  2. 资源管理:确保及时关闭Socket连接和流,释放系统资源。
  3. 安全性:考虑使用加密和认证机制来保护数据传输的安全。

 


http://www.kler.cn/a/306082.html

相关文章:

  • 【Python】基础语法介绍
  • 第22天:信息收集-Web应用各语言框架安全组件联动系统数据特征人工分析识别项目
  • f(f(x))=x^2 -11x+36, 求f(6)的值,
  • [Unity Shader] 【图形渲染】Shader数学基础12-坐标空间变换
  • 【Linux探索学习】第二十三弹——理解文件系统:认识硬件、探索文件在硬件上的存储问题
  • WebAPI编程(第一天,第二天)
  • (批处理)设置延时+设置关机倒计时
  • Flink CEP(复杂事件处理)高级进阶
  • 【大数据方案】智慧大数据平台总体建设方案书(word原件)
  • 应用层协议HTTP介绍
  • 【自主搭建博客网站 第一篇章】前情提要
  • ??Ansible——ad-hoc
  • 修改 HTTP 和 HTTPS 代理设置为 `http://127.0.0.1:8118
  • 【Android Studio】API 29(即Android 10)或更高版本,在程序启动时检查相机权限,并在未获取该权限时请求它
  • AI学习指南深度学习篇-Adam的基本原理
  • 计算机三级 - 数据库技术 - 第十三章 大规模数据库架构 笔记
  • 速通LLaMA1:《LLaMA: Open and Efficient Foundation Language Models》全文解读
  • ARM驱动学习之9注册字符类设备
  • Robot Operating System——带有时间戳和坐标系信息的线速度和角速度
  • 51单片机+proteus+(DS1302+DS18B20)
  • css选择器有几种?选择器的优先级是怎样的?
  • [网络][CISCO]Cisco-PIX配置详解
  • Leetcode 3290. Maximum Multiplication Score
  • 通过C# 裁剪PDF页面
  • python+adb
  • IP池对数据爬取工作的帮助