这几天看了一下tftp协议,非常简单,这个学期选修的JAVA,
想趁这个机会练习一下,写一个tftp server的,刚刚把demo完成了,
用windows2003的tftp客户端测试过了,也用我的ADSL (嵌入式linux)里面的tftp测试过,demo版本还是挺好的,至少可以用 。。。
=================================================
源代码可以在这里下载: UploadFiles/2007-5/53552715.zip
=================================================
因为tftp协议本身就很简单,所以我的代码就用了三个类文件,
Main.java --> 这个是启动代码,这个demo版本中,
他只是建立一个ServerAgent的对象,然后启动这个对象
tftpServerAgent.java --> 这是Server,它一直监听UDP Port 69,
来了新的连接,它就创建一个ClientAgent,
自己继续等待。
tftpClientAgent.java --> 这是与ftp客户端通信的类,它处理RRQ和WRQ
请求。
这两个Agent都继承了Thread,因为我想在以后的版本中加入Server的管理功能。
============================================
主要代码:
=================================
Main.java
===========================================
public class Main {
/** Creates a new instance of Main */
public Main() {
}
public static void main(String[] args) throws Exception {
// TODO code application logic here
tftpServerAgent tftp_srv = new tftpServerAgent();
tftp_srv.setDaemon(true);
tftp_srv.start();
tftp_srv.join(); //暂时先这么处理吧
}
}
=======================================
tftpServerAgent.java
===========================================
public class tftpServerAgent extends Thread {
//over the parent's run methord
public void run() {
try {
DatagramSocket tftpd = new DatagramSocket(69); //tftp server socket
byte[] buf = new byte[516]; //a buffer for UDP packet
DatagramPacket dp = new DatagramPacket(buf, 516); //a UDP packet
DataInputStream din = null;
tftpClientAgent newClient = null;
short tftp_opcode = 0; //opcode: the 2 bytes in th