2012-04-16 2 views
0

Я хочу, чтобы проверить мою программу, которая отправляет DatagramSocket данных между отправителем и приемником классом. Как мне пройти тестирование тестирования данных между классами?Тестирования передачи DatagramSockets

Вот мой код Sender ...

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(); 
     } 
    } 
} 

И это мой класс приемник ...

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()); 
      } 
     } 
    } 
+0

Не проще всего было бы написать приемник? – Erik

+0

@Erik - да, вот что я сделал бы, добавив код в класс CheckIn. Затем замените номер порта магии «5800» параметром ctor и добавьте порт для приема. Затем сделайте два из них с дополнительными портами, затем передайте их парам потоков, затем запустите в одной дейтаграмме и наблюдайте, как она циркулирует вокруг. –

+0

Хм. нужны только два потока - каждый ждет датаграмм и, по получении, отправляет их снова. –

ответ

1

Вы, вероятно, нужно будет написать класс приемника для тестирования против, или доступ к целевому серверу, чтобы вы могли наблюдать за изменением. Протокол UDP в значительной степени является односторонним протоколом.

Это руководство может быть полезно для получения дополнительной информации о DatagramSockets - в нем также есть раздел о написании отправителя и получателя. http://docs.oracle.com/javase/tutorial/networking/datagrams/index.html

+0

У меня тоже есть класс приемника – user1236260

+0

Ну, а не класс reciver? Если это так, просто распечатайте значения в пакетах по мере их восстановления. –

+0

Ну, запустите программу Receiver, затем запустите программу Sender - вы сможете увидеть, разговаривают ли они друг с другом, особенно если вы используете IDE, например Eclipse, и может установить точку останова отладчика в приемнике. – wattostudios

Смежные вопросы