什么是 TCP 和 UDP?Java 中如何实现 TCP 和 UDP 协议

这篇具有很好参考价值的文章主要介绍了什么是 TCP 和 UDP?Java 中如何实现 TCP 和 UDP 协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在计算机网络中,TCP(传输控制协议)和UDP(用户数据报协议)是两种最常用的传输层协议。它们都用于在网络上传输数据,但是它们之间有很多不同之处。本文将介绍TCP和UDP的基本概念,以及在Java中如何实现TCP和UDP协议。

什么是 TCP 和 UDP?Java 中如何实现 TCP 和 UDP 协议,SpringBoot 教程,tcp/ip,udp,java

什么是TCP和UDP?

TCP和UDP都是传输层协议,用于在网络上传输数据。它们都是在IP协议之上构建的协议,因此它们都需要IP地址和端口号来标识网络中的设备和应用程序。

TCP

TCP是一种面向连接的协议,它提供了可靠的数据传输。在TCP连接中,数据被分割成多个数据包,并通过网络传输。每个数据包都有一个序号和确认号,用于检测数据包是否丢失或损坏。如果一个数据包丢失或损坏,TCP会重新发送该数据包,直到接收方确认收到为止。TCP还提供了流控制和拥塞控制机制,以确保网络不会过载或崩溃。

UDP

UDP是一种无连接的协议,它提供了不可靠的数据传输。在UDP中,数据被分割成多个数据包,并通过网络传输。每个数据包都有一个源端口和目标端口,但没有序号和确认号。如果一个数据包丢失或损坏,UDP不会重新发送该数据包。UDP不提供流控制和拥塞控制机制,因此在网络拥塞或负载过高的情况下,可能会导致数据包丢失或延迟。

Java中的TCP和UDP

在Java中,可以使用Socket类和DatagramSocket类来实现TCP和UDP协议。Socket类用于TCP协议,DatagramSocket类用于UDP协议。以下是TCP和UDP协议在Java中的实现示例。

TCP

以下是一个使用Socket类实现TCP协议的示例。在这个示例中,我们创建了一个服务器和一个客户端。客户端向服务器发送消息,服务器接收并响应消息。

服务器端代码
import java.io.*;
import java.net.*;

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(9999);
        System.out.println("Server started.");

        while (true) {
            Socket clientSocket = serverSocket.accept();
            System.out.println("Connected: " + clientSocket);

            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

            String inputLine, outputLine;
            while ((inputLine = in.readLine()) != null) {
                System.out.println("Received message: " + inputLine);
                outputLine = "Server: " + inputLine;
                out.println(outputLine);
                if (outputLine.equals("Bye."))
                    break;
            }

            clientSocket.close();
            System.out.println("Client disconnected.");
        }
    }
}
客户端代码
import java.io.*;
import java.net.*;

public class TCPClient {
    public static void main(String[] args) throws IOException {
        String serverHostname = "localhost";
        int serverPort = 9999;

        Socket socket = new Socket(serverHostname, serverPort);

        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        String userInput;
        while ((userInput = stdIn.readLine()) != null) {
            out.println(userInput);
            System.out.println("Sent message: " + userInput);
            String receivedMessage = in.readLine();
            System.out.println("Received message: " + receivedMessage);
            if (receivedMessage.equals("Bye."))
                break;
        }

        socket.close();
        System.out.println("Connection closed.");
    }
}

在这个示例中,我们创建了一个ServerSocket对象,它绑定到9999端口,然后等待客户端连接。当客户端连接后,服务器会创建一个Socket对象,并使用这个Socket对象的输入流和输出流来和客户端通信。当服务器从客户端接收到消息后,它会将消息添加前缀“Server: ”并返回给客户端。

客户端首先连接到服务器,然后从标准输入中读取输入,并将它发送给服务器。客户端还从服务器接收响应,并将其打印到控制台上。

UDP

以下是一个使用DatagramSocket类实现UDP协议的示例。在这个示例中,我们创建了一个服务器和一个客户端。客户端向服务器发送消息,服务器接收并响应消息。

服务器端代码
import java.io.*;
import java.net.*;

public class UDPServer {
    public static void main(String[] args) throws IOException {
        DatagramSocket serverSocket = new DatagramSocket(9999);
        System.out.println("Server started.");

        byte[] receiveData = new byte[1024];
        byte[] sendData = new byte[1024];

        while (true) {
            DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
            serverSocket.receive(receivePacket);

            String message = new String(receivePacket.getData(), 0, receivePacket.getLength());
            System.out.println("Received message: " + message);

            InetAddress IPAddress = receivePacket.getAddress();
            int port = receivePacket.getPort();
            String responseMessage = "Server: " + message;
            sendData = responseMessage.getBytes();

            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
            serverSocket.send(sendPacket);

            if (responseMessage.equals("Server: Bye.")) {
                System.out.println("Client disconnected.");
                break;
            }
        }

        serverSocket.close();
    }
}
客户端代码
import java.io.*;
import java.net.*;

public class UDPClient {
    public static void main(String[] args) throws IOException {
        String serverHostname = "localhost";
        int serverPort = 9999;

        DatagramSocket clientSocket = new DatagramSocket();

        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
        InetAddress IPAddress = InetAddress.getByName(serverHostname);

        byte[] sendData = new byte[1024];
        byte[] receiveData = new byte[1024];

        String userInput;
        while ((userInput = inFromUser.readLine()) != null) {
            sendData = userInput.getBytes();

            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, serverPort);
            clientSocket.send(sendPacket);
            System.out.println("Sent message: " + userInput);

            DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
            clientSocket.receive(receivePacket);

            String receivedMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
            System.out.println("Received message: " + receivedMessage);

            if (receivedMessage.equals("Server: Bye.")) {
                System.out.println("Connection closed.");
                break;
            }
        }

        clientSocket.close();
    }
}

在这个示例中,我们创建了一个DatagramSocket对象,并绑定到9999端口。服务器从客户端接收消息,并将消息添加前缀“Server: ”并返回给客户端。

客户端创建一个DatagramSocket对象,并向服务器发送消息。客户端还从服务器接收响应,并将其打印到控制台上。

总结

TCP和UDP是计算机网络中最常用的传输层协议。TCP是一种面向连接的协议,提供可靠的数据传输。UDP是一种无连接的协议,提供不可靠的数据传输。

在Java中,可以使用Socket类和DatagramSocket类来实现TCP和UDP协议。TCP协议使用Socket类,UDP协议使用DatagramSocket类。在代码编写过程中,需要注意正确处理异常和及时关闭Socket和DatagramSocket对象,以避免资源泄露和数据丢失等问题。

以上是TCP和UDP协议在Java中的实现示例,希望能对您有所帮助。文章来源地址https://www.toymoban.com/news/detail-575248.html

到了这里,关于什么是 TCP 和 UDP?Java 中如何实现 TCP 和 UDP 协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 什么是三次握手与四次挥手( 一篇文章讲清楚TCP协议与UDP协议)

        关于TCP协议和UDP协议大家应该都有所耳闻,我们常用的网络通讯。比如浏览网页、软件聊天、以及你看到的这篇文章,都是通过这两种协议来进行数据传输的。 到底他们是如何工作的?这两种协议的区别又是什么呢?请随武汉海翎光电的小编一起耐心看完这篇文章,你一

    2024年02月09日
    浏览(44)
  • (学习笔记)如何理解TCP是面向字节流的协议,UDP是面向报文的协议?

    之所以会说TCP是面向字节流的协议,UDP是面向报文的协议,是因为操作系统对TCP和UDP协议的发送方的机制不同,也就是问题原因在发送方 为什么UDP协议是面向报文的协议?  当用户消息通过UDP协议传输时, 操作系统不会对消息进行拆分 ,在组装好UDP头部后就交给网络层来处

    2024年02月16日
    浏览(37)
  • Java网络编程之IP,端口号,通信协议(UDP,TCP)

    ① C/S :客户端/服务器 在用户本地需要下载安装客户端程序,在远程有一个服务器端程序。 优点:画面精美,用户体验好 缺点:用户需要下载更新 ② B/S :浏览器/服务器 只需要一个浏览器,用户通过指定网址访问对应的服务器。 优点:不需要开发客户端,只需要页面+服务

    2024年02月03日
    浏览(78)
  • TCP 和 UDP 区别? 2、TCP/IP 协议涉及哪几层架构? 3、描述下 TCP 连接 4 次挥手的过程?为什么要 4 次挥手?

    TCP 基于连接,UDP 基于无连接。 TCP 要求系统资源较多,UDP 较少。 UDP 程序结构较简单。 TCP 保证数据正确性,UDP 可能丢包。 TCP 保证数据顺序,UDP 不保证。 应用层 传输层 互连网络层 网络接口层。 因为 TCP 是全双工,每个方向都必须进行单独关闭。关闭连接时,当 Server 端收

    2024年02月03日
    浏览(40)
  • Java中网络的基本介绍。网络通信,网络,ip地址,域名,端口,网络通信协议,TCP/IP传输过程,网络通信协议模型,TCP协议,UDP协议

    - 网络通信 概念:网络通信是指 通过计算机网络进行信息传输的过程 ,包括数据传输、语音通话、视频会议等。在网络通信中,数据被分成一系列的数据包,并通过网络传输到目的地。在数据传输过程中,需要确保数据的完整性、准确性和安全性。常见的网络通信协议有T

    2024年02月10日
    浏览(67)
  • 网络协议分析(一)(C语言实现---ethernet、arp、ip、icmp、udp、tcp)

    以太网协议是一种局域网通信协议,它通过物理层和数据链路层的协同工作,使用媒体访问控制地址和载波监听/冲突检测协议来实现计算机之间的稳定数据传输。在数据传输过程中,以太网会将数据封装成数据帧,并根据目标MAC地址来识别需要接收数据的计算机。通过这种方

    2024年02月06日
    浏览(48)
  • API 接口主流协议有哪些?如何创建 HTTP/HTTP、WebSocket/WebSockets、TCP/UDP、gRPC、SOAP、Dubbo/HSF 等不同协议?

    API 接口协议繁多,不同的协议有着不同的使用场景。70% 互联网应用开发者日常仅会接触到最通用的 HTTP 协议,相信大家希望了解更多其他协议的信息。我们今天会给大家介绍各种 API 接口主流协议和他们之间的关系。 接口协议分成两类: 传输层协议和应用层协议。 传输层协

    2023年04月21日
    浏览(91)
  • java实现UDP及TCP通信

    简介 UDP (User Datagram Protocol)用户数据报协议, TCP (Transmission Control Protocol) 传输控制协议,是传输层的两个重要协议。 UDP是一种 无连接、不可靠 传输的协议。其将数据源IP、目的地IP和端口封装成数据包,不需要建立连接,每个数据包的大小限制在64KB内;发送不管对方是否准

    2024年02月03日
    浏览(43)
  • Labview实现vi间数据传递的方法汇总 ---子VI、队列、全局变量及UDP/TCP协议传输

    本文汇总一下不同VI之间数据传递的方式,使大家明确数据传递的几种类型并灵活使用。 本文程序均上传至云端,读者可自行下载学习。 基于目前大家所学到的基础知识,在Labview中简单来说数据类型基本包括 数值、字符串、数组、簇、布尔量、引用、路径、枚举量、波形图

    2024年04月10日
    浏览(50)
  • TCP协议与UDP协议详解

    TCP协议 TCP,即Transmission Control Protocol,传输控制协议。人如其名,要对数据的传输进行一个详细的控制。 TCP协议的特点:有连接,可靠传输,面向字节流,全双工 有连接:TCP协议使用时必须先建立 TCP 连接。在传送数据完毕后,必须释放已经建立的 TCP 连接。 可靠传输:可靠

    2023年04月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包