1

送信者クラスと受信者DatagramSocketクラスの間でデータを送信するプログラムをテストしたいと考えています。クラス間でデータが送信されていることをテストするにはどうすればよいですか?

これが私の送信者コードです...

public class CheckIn {

    private String patientName;
    private String pTime;
    private int portnumber;

    public CheckIn(String pname, String time, int port){
        patientName = pname;
        pTime = time;
        portnumber = port;
        process();
    }

    public void process() {
        try {
            DatagramSocket is = new DatagramSocket(5800,InetAddress.getLocalHost());
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(baos);
            String n = "Your "+"\n" + pTime + "\n" + patientName + " has arrived";
            oos.writeObject(n);
            byte[] buffer = baos.toByteArray();
            baos.close();
            oos.close();
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length,InetAddress.getLocalHost(), portnumber);
            is.send(packet);

            System.out.println( "patient name " + patientName );
            System.out.println( "Check In");
        }
        catch (Exception e){
            System.out.println("ERROR Cashier: " + e.getMessage() );
            e.printStackTrace();
        }
    }
}

そして、これは私のReceiverクラスです...

class Reciever2 extends Thread {
    public Reciever2(){
        this.start();   //starts the thread
    }

    public void run(){
        try {
            DatagramSocket socket = new DatagramSocket(5700,InetAddress.getLocalHost());
            System.out.println( "Recieving" );   //prints when receiving a message

            while (true){
                byte[] data = new byte[1024];    //array of bytes
                DatagramPacket packet = new DatagramPacket(data,data.length);  
                socket.receive(packet);      //receives the packet
                ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData()); 
                ObjectInputStream ois =  new ObjectInputStream(bais);
                String s = (String) ois.readObject();   //reading the data
                bais.close();   //closes input stream
                ois.close();   //closes input stream

                System.out.println(s);
                theText.setText( s);   //displays message
            }
        }
        catch (Exception e){
            System.out.println("ERROR Cook: " + e.getMessage() );
            }
        }
    }
4

2 に答える 2

1

おそらく、変更を観察できるように、テスト用の受信者クラスを作成するか、宛先サーバーにアクセスする必要があります。UDP プロトコルは、ほぼ一方向のプロトコルです。

このガイドは、詳細を理解するのに役立つ場合がありますDatagramSockets。送信者と受信者の記述に関するセクションもあります。 http://docs.oracle.com/javase/tutorial/networking/datagrams/index.html

于 2012-04-16T13:50:51.713 に答える
0

モッキングと呼ばれる手法を使用できます。Java に最適なモック フレームワークは何ですか?を参照してください。詳細については。

于 2012-04-16T13:54:49.357 に答える