0
我正在使用TFTP客戶端來使用TFTP Java服務器。TFTP客戶端無法識別最後一個數據包何時發送
無論從客戶端請求什麼(在這種情況下是一個txt文件),它都應該被讀取和重寫。但是,我遇到了一個問題,客戶端似乎沒有意識到最後一個數據包已經發送,在這種情況下,會話應該由TFTP客戶端關閉(至少據我所知)。
這是讀取請求文件並檢查數據包是否小於512字節的通用代碼庫,在這種情況下,它應該是最後一個數據包,客戶端應關閉會話。客戶繼續工作直到轉移時間超時。
int length = fileInputStream.read(buf);
ByteBuffer wrap = ByteBuffer.allocate(BUFSIZE);
wrap.putShort((short) OP_DAT);
wrap.putShort((short) blockNumber);
wrap.put(buf);
DatagramPacket data = new DatagramPacket(wrap.array(), wrap.array().length);
sendSocket.send(data);
byte[] rec = new byte[BUFSIZE];
DatagramPacket receivePacket = new DatagramPacket(rec, rec.length);
sendSocket.receive(receivePacket);
short comp = getAcknowledgment(receivePacket);
if(comp == (short) blockNumber){
System.out.println("Length of sent packet: " + length);
return length < 512;
}
return true;
如果任何人有使用的是Mac OS X TFTP客戶端的經驗,我會爲任何建議非常感謝。