UDP-Java 套接字如何超过 args.length > 2 来测试客户端服务器连接的稳健程度?

UDP-Java Socket how can I exceed args.length > 2 to test how robust the client server connection is?

我试图在 google.de 初始化为 null 之前输入一个不同的 IntetAdress 对象,这对输出没有影响。

如何使用 args.length > 2 提示 if-else 语句来测试使用方法是否有效?

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class Client {
    public static void usage() { /// Methode Usage definiert
        System.out.print("usage:");
        System.out.println("\t Client [< connect IP >] [< connect port >]"); /// Druck die Nutzung Ip und Port
    } // usage
    public static void main(String[] args) throws Exception {
        int port = 1234;
        InetAddress address = InetAddress.getByName("127.0.0.1");

        DatagramSocket sock = new DatagramSocket(); /// Parameterloser Konstruktor wird verwendet, zur generierung des
                                                    /// DatagramSockets.

        byte[] buffer = new byte[1];
        DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, port);
        sock.send(packet);
        System.out.println("Client hat Request versendet! ");
        sock.receive(packet);
        System.out.print("Server-Antwort von ");
        System.out.print(packet.getAddress().toString() + ": ");
        System.out.println(packet.getPort());
        sock.close();
    } // main
} // Client

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class RobusterClient {
    public static void usage() { /// Methode Usage definiert
        System.out.print("usage:");
        System.out.println("\t Client [< connect IP >] [< connect port >]"); /// Druck die Nutzung Ip und Port
    } // usage

    public static void main(String[] args) throws Exception {
        int port = 1234; /// Port 1234 festgelegt
        InetAddress address = InetAddress.getByName("www.google.de"); /// InetAddress adress als Name
        if (args.length > 2) { /// Wenn args.length größer 2 dann usage aufrufen
            usage(); // Druckt aktuelle IP und Port
            System.exit(1);
        } // if
        if (args.length > 0) // größer 0 dann args.length aufrufen
            address = InetAddress.getByName(args[0]);
        else
            address = InetAddress.getByName("127.0.0.1"); /// Holle Die Ip Adresse mit diesem Namen 127.....
        if (args.length > 1)
            port = Integer.parseInt(args[1]); /// was macht parseInt ? Wandle in int um
        if (port <= 0 || port > 65535) { ///
            System.err.println(" Port liegt nicht im gültigen Bereich!");
            System.exit(1);
        } // if
        DatagramSocket sock = new DatagramSocket();
        byte [] buffer = new byte[1];
        DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, port);
        sock.send(packet);
        System.out.println("Client hat Request versendet! ");
        sock.receive(packet);
        System.out.print("Server-Antwort von ");
        System.out.print(packet.getAddress().toString() + ": ");
        System.out.println(packet.getPort());
        sock.close();
    }
}

例如我该如何提示?

if (args.length > 0) 
InetAddress.getByName(args[0]); 

您的 RobustClient 已经按照您要求的方式使用 args。你只需要去掉程序开头对InetAddress.getByName("www.google.de")的调用即可。

试试这个:

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class RobusterClient {
    public static void usage() { /// Methode Usage definiert
        System.out.print("usage:");
        System.out.println("\t Client [< connect IP >] [< connect port >]"); /// Druck die Nutzung Ip und Port
    } // usage

    public static void main(String[] args) throws Exception {
        if (args.length > 2) { /// Wenn args.length größer 2 dann usage aufrufen
            usage(); // Druckt aktuelle IP und Port
            System.exit(1);
        } // if

        InetAddress address; /// InetAddress adress als Name
        if (args.length > 0) // größer 0 dann args.length aufrufen
            address = InetAddress.getByName(args[0]);
        else
            address = InetAddress.getByName("127.0.0.1"); /// Holle Die Ip Adresse mit diesem Namen 127.....

        int port;
        if (args.length > 1) {
            port = Integer.parseInt(args[1]); /// was macht parseInt ? Wandle in int um
            if (port <= 0 || port > 65535) { ///
                System.err.println(" Port liegt nicht im gültigen Bereich!");
                System.exit(1);
            } // if
        }
        else
            port = 1234; /// Port 1234 festgelegt 

        DatagramSocket sock = new DatagramSocket();
        byte [] buffer = new byte[1];
        DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, port);
        sock.send(packet);
        System.out.println("Client hat Request versendet! ");

        sock.receive(packet);
        System.out.print("Server-Antwort von ");
        System.out.print(packet.getAddress().toString() + ": ");
        System.out.println(packet.getPort());

        sock.close();
    }
}