第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

通過 TFTP 傳輸?shù)奈募c主機上傳輸?shù)奈募笮〔煌?/h1>

很長一段時間以來,我一直在努力在 Android 應(yīng)用程序中處理 TFTP 協(xié)議。其主要功能是從托管 TFTP 服務(wù)器的定制設(shè)計設(shè)備下載文件。我正在瀏覽互聯(lián)網(wǎng),希望找到一些好的、已經(jīng)編寫好的實現(xiàn)。首先,我嘗試使用 TFTP 庫,它是 Apache Commons 的一部分。不幸的是沒有運氣 - 不斷超時甚至完全凍結(jié)。經(jīng)過進一步研究,我在 github 上找到了一些代碼 -請看一下。我已經(jīng)采用了 Android 代碼,經(jīng)過一些調(diào)整,我終于收到了一些文件。該設(shè)備的創(chuàng)建者表示,塊大小應(yīng)該正好是 1015 字節(jié)。所以我將包大小增加到1015并更新了創(chuàng)建讀取請求包的方法:DatagramPacket createReadRequestPacket(String strFileName) {    byte[] filename = strFileName.getBytes();    byte[] mode = currentMode.getBytes();    int len = rOpCode.length + filename.length + mode.length + 2;    ByteArrayOutputStream outputStream = new ByteArrayOutputStream(len);    try {        outputStream.write(rOpCode);        outputStream.write(filename);        byte term = 0;        outputStream.write(term);        outputStream.write(mode); // "octet"        outputStream.write(term);        outputStream.write("blksize".getBytes());        outputStream.write(term);        outputStream.write("1015".getBytes());        outputStream.write(term);    } catch (IOException e) {        e.printStackTrace();    }    byte[] readPacketArray = outputStream.toByteArray();    return new DatagramPacket(readPacketArray, readPacketArray.length, serverAddr, port);}正在下載塊,但有一個主要問題 - 我下載的文件是分成幾部分的,每個部分 512kB(除了最后一個),而我在 Android 設(shè)備上收到的每個部分大約大 0.5kB??雌饋砗孟衩看味嘁粋€字節(jié)或者多一整個附加。顯然我不完全理解它并且我錯過了一些東西。
查看完整描述

1 回答

?
至尊寶的傳說

TA貢獻1789條經(jīng)驗 獲得超10個贊

我知道出了什么問題。這種奇怪的行為是收到最后一個數(shù)據(jù)包時這一行的結(jié)果:

byte[] fileDataBytes = pktFactory.getDataBytes(dPkt);

返回的數(shù)組大小始終等于指定的數(shù)據(jù)包長度,即使接收到的數(shù)據(jù)較小。在我的例子中,最后一個數(shù)據(jù)包是 0 字節(jié)(tftp 為 +4 字節(jié)),但即便如此,額外的 512 字節(jié)還是添加到了輸出流中。

為了解決這個問題,我使用額外的參數(shù)重載了提到的方法 - 當接收到的數(shù)據(jù)大小高于 4 字節(jié)且低于指定的數(shù)據(jù)包大小(512 字節(jié))時,接收到的數(shù)據(jù)包的實際大小。此更改導(dǎo)致獲得最后一個數(shù)據(jù)包的數(shù)組的正確大小,因此接收到的文件在操作結(jié)束時具有正確的大小。


查看完整回答
反對 回復(fù) 2024-01-05
  • 1 回答
  • 0 關(guān)注
  • 286 瀏覽
慕課專欄
更多

添加回答

了解更多

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號