Java—TCP&UDP

1.TCP(Transmission Control Protocol)

TCP 是一种面向连接的、可靠的、基于字节流的传输协议,它有以下特性:

  1. 可靠性:TCP 使用确认、重传、校验和等机制来确保数据的可靠传输,保证数据的完整性和顺序性。(三次握手,四次挥手)

  2. 面向连接:在数据传输之前,TCP 需要建立连接,并在连接上进行通信,通信结束后再关闭连接。

  3. 流式传输:TCP 使用流式传输,将数据分割成 TCP 报文段进行传输,而无需关心数据的大小和分割。

在 Java 中,可以使用 java.net.Socketjava.net.ServerSocket 类来实现 TCP 客户端和服务器端的编程。


服务器:

import java.net.*;
import java.io.*;

public class TCPServer {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8888);
        System.out.println("服务器已启动,等待客户端连接...");

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

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

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            System.out.println("客户端发送消息:" + inputLine);
            out.println("服务器收到消息:" + inputLine);
        }

        out.close();
        in.close();
        clientSocket.close();
        serverSocket.close();
    }
}

客户端: 

import java.net.*;
import java.io.*;

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

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

        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        String userInput;

        while ((userInput = stdIn.readLine()) != null) {
            out.println(userInput);
            System.out.println("服务器响应:" + in.readLine());
        }

        out.close();
        in.close();
        stdIn.close();
        socket.close();
    }
}

服务器程序的工作过程包含以下四个基本的步骤:

● 调用 ServerSocket(int port) :创建一个服务器端套接字,并绑定到指定端口上,用于监听客户端的请求。

● 调用 accept():监听连接请求,如果客户端请求连接,则接受连接,返回通信套接字对象。

● 调用 该Socket类对象的 getOutputStream() 和 getInputStream ():获取输出流和输入流,开始网络数据的发送和接收。

● 关闭ServerSocket和Socket对象:客户端访问结束,关闭通信套接字 。


2.UDP(User Datagram Protocol)

UDP 是一种无连接的、不可靠的、面向数据报的传输协议,它有以下特性:

  1. 无连接:UDP 不需要建立连接,发送数据报之前也不需要进行握手操作,因此传输速度较快。

  2. 不可靠性:UDP 不保证数据的可靠传输,数据报可能会丢失、重复或乱序,也不提供重传机制。

  3. 面向数据报:UDP 使用数据报进行通信,每个数据报都是独立的、完整的信息单元。

在 Java 中,我们可以使用 java.net.DatagramSocketjava.net.DatagramPacket 类来实现 UDP 客户端和服务器端的编程。

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值