我想测试我的程序,该程序在发件人和接收器类之间发送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() );
}
}
}
答案 0 :(得分:1)
您可能需要编写一个接收器类来测试或访问目标服务器,以便您可以观察更改。 UDP协议几乎是一种单向协议。
本指南可能有助于更多地了解DatagramSockets
- 它还有一个关于编写发件人和收件人的部分。
http://docs.oracle.com/javase/tutorial/networking/datagrams/index.html
答案 1 :(得分:0)
你可以使用一种名为Mocking的技术。 有关详细信息,请参阅What's the best mock framework for Java?。