TCP和UDP的java模拟代码,模拟三次握手

`import java.net.;
import java.io.
;

public class Main {
public static void main(String[] args) {
try {
// TCP连接模拟
ServerSocket serverSocket = new ServerSocket(8080);
Socket clientSocket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
// UDP 连接模拟
DatagramSocket datagramSocket = new DatagramSocket(8081);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];

        while (true) {
            DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
            datagramSocket.receive(receivePacket);
            String message = new String(receivePacket.getData());
            System.out.println("Received message: " + message);

            InetAddress IPAddress = receivePacket.getAddress();
            int port = receivePacket.getPort();
            String response = "Server received message: " + message;
            sendData = response.getBytes();
            DatagramPacket sendPacket = new DatagramPacket(sendData, sendData.length, IPAddress, port);
            datagramSocket.send(sendPacket);
        // 三次握手
        String inputLine;
        inputLine = in.readLine();
        System.out.println("Received SYN: " + inputLine);
        out.println("SYN-ACK");
        inputLine = in.readLine();
        System.out.println("Received ACK: " + inputLine);

        // 数据效验
        while ((inputLine = in.readLine()) != null) {
            System.out.println("Received message: " + inputLine);
            out.println("Server received message: " + inputLine);
        }

        clientSocket.close();
        serverSocket.close();
    } catch (IOException e) {
        System.out.println("Exception caught when trying to listen on port or listening for a connection");
        System.out.println(e.getMessage());
    }
}

}`

posted @   REALROOKIE  阅读(96)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示