TCP协议简单总结

TCP:传输控制协议

  • 特点:面向连接、可靠通信

  • TCP的最终目的:要保证在不可靠的信道上实现可靠的传输

  • TCP主要有三个步骤实现可靠传输:三次握手建立连接,传输数据进行确认,四次挥手断开连接

    • 三次握手建立可靠连接。

    • 建立连接后会建立可靠的通信管道

    • 四次握手断开连接

TCP通信之客户端开发

客户端发送信息:

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

public class TCPClient {
    public static void main(String[] args) {
        final String serverAddress = "127.0.0.1"; // 服务器地址
        final int serverPort = 8080; // 服务器端口

        try {
            // 连接到服务器
            Socket socket = new Socket(serverAddress, serverPort);
            System.out.println("Connected to server.");

            // 发送消息到服务器
            sendMessage(socket, "Hello, Server!");

            // 接收服务器的响应
            String response = receiveMessage(socket);
            System.out.println("Response from server: " + response);

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

    private static void sendMessage(Socket socket, String message) throws IOException {
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        out.println(message);
    }

    private static String receiveMessage(Socket socket) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        return in.readLine();
    }
}

TCP通信之服务端开发

服务端接收信息

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

public class TCPExample {
    public static void main(String[] args) {
        final int PORT = 8080;

        try {
            // 启动服务器
            ServerSocket serverSocket = new ServerSocket(PORT);
            System.out.println("Server started. Waiting for connections...");

            // 等待客户端连接
            Socket clientSocket = serverSocket.accept();
            System.out.println("Client connected: " + clientSocket);

            // 处理客户端请求
            handleClient(clientSocket);

            // 关闭服务器
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void handleClient(Socket clientSocket) {
        try {
            // 接收客户端消息
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            String message = in.readLine();
            System.out.println("Received message from client: " + message);

            // 向客户端发送响应
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            out.println("Hello, Client!");

            // 关闭连接
            clientSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
相关推荐
小小小米粒7 分钟前
Maven Tools
java
IOsetting21 分钟前
金山云主机添加开机路由
运维·服务器·开发语言·网络·php
kali-Myon21 分钟前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
我是咸鱼不闲呀25 分钟前
力扣Hot100系列20(Java)——[动态规划]总结(下)( 单词拆分,最大递增子序列,乘积最大子数组 ,分割等和子集,最长有效括号)
java·leetcode·动态规划
清水白石00834 分钟前
深入解析 LRU 缓存:从 `@lru_cache` 到手动实现的完整指南
java·python·spring·缓存
XiaoMu_0011 小时前
自动化漏洞扫描与预警平台
运维·网络·自动化
符哥20081 小时前
C++ 进阶知识点整理
java·开发语言·jvm
崎岖Qiu1 小时前
【计算机网络 | 第九篇】PPP:点对点协议
网络·笔记·计算机网络·ppp
23zhgjx-zgx1 小时前
USB 设备通信数据包审计与键值解析报告
网络·ctf·流量
WJ.Polar1 小时前
FTP、Telnet、PPP、SNMP协议
服务器·网络