tftpClientAgent.java
=========================================
public class tftpClientAgent extends Thread {
public tftpClientAgent(InetAddress ip, int port, short opcode, String fname, String mode) {
this.m_ClientAddress = ip;
this.m_ClientPort = port;
this.m_curopcode = opcode;
this.m_filename = fname;
this.m_mode = mode;
}
public void run() {
int nfail = 100;
while (nfail– > 0) {
//try getFreePort 100 times
try {
this.m_so_tftp = new DatagramSocket(this.getFreePort());
break; //get a random port number
} catch (SocketException e) {
}
}
//ok, the UDP socket is ready, response to the client
switch (this.m_curopcode) {
case 1:
//RRQ
this.RRQ();
break;
case 2:
//WRQ
this.WRQ();
//System.out.println(“debug: tftpClientAgent.run() –> a WRQ ended …”);
break;
}
this.m_so_tftp.close();
}
}
private InetAddress m_ClientAddress; //ip of the client
private int m_ClientPort; //port of the client
private DatagramSocket m_so_tftp; //the socket object send or get message
private short m_curopcode; //the current opcode( wrq/rrq )
private String m_filename;
private String m_mode;
private final int m_MAX_nTimeOut = 5;
=========================================