一、shell模拟client

printf "Hello my first udp \n" | nc -u -w 1 172.20.10.14 8888

二、java server

package com.mms.densenapplication;

import android.os.Bundle;
import android.util.Log;
import androidx.appcompat.app.AppCompatActivity;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UdpServer extends AppCompatActivity {

    private static final String TAG = "UDPServer";
    private static final int PORT = 8888;
    private DatagramSocket socket;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        startUdpServer();
    }

    public void startUdpServer() {
        new Thread(() -> {
            try {
                socket = new DatagramSocket(PORT);
                Log.d(TAG, "======================================");
                Log.d(TAG, "UDP Server started on port " + PORT);

                byte[] buffer = new byte[1024];
                while (true) {
                    DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
                    socket.receive(packet);  // 阻塞接收
                    String message = new String(packet.getData(), 0, packet.getLength());
                    Log.d(TAG, "Received from " + packet.getAddress().getHostAddress() + ":" + packet.getPort() + " -> " + message);
                }
            } catch (Exception e) {
                Log.e(TAG, "UDP Server error", e);
            } finally {
                if (socket != null && !socket.isClosed()) {
                    socket.close();
                }
            }
        }).start();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (socket != null && !socket.isClosed()) {
            socket.close();
        }
    }
}

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐