Kei te haere tonu te raupapa o nga tuhinga e whakatapua ana ki te whakatinana ritenga o nga taputapu papatohu Windows, kaore e taea e matou te pa atu ki te TFTP (Trivial File Transfer Protocol) - he kawa whakawhiti kōnae ngawari.
Ka rite ki te wa whakamutunga, me korero poto ki runga i te ariā, tirohia te waehere e whakatinana ana i nga mahi rite ki te mea e hiahiatia ana, ka tātarihia. Ētahi atu kōrero - i raro i te tapahi
E kore ahau e kape-whakapiri i nga korero tohutoro, nga hononga ka kitea i mua i te mutunga o te tuhinga, ka kii noa ahau ko te mea nui, ko te TFTP he rereketanga ngawari o te kawa FTP, kei roto i te tautuhinga mana uru. kua tangohia, me te mea kaore he mea i konei engari ko nga whakahau mo te tango me te whakawhiti i tetahi konae. Heoi, kia pai ake ai to maatau whakatinanatanga me te urutau ki nga tikanga o naianei o te tuhi waehere, kua whakarereke paku te wetereo - kaore tenei e whakarereke i nga maataapono o te mahi, engari ko te atanga, IMHO, ka iti ake te arorau, he whakakotahi i nga ahuatanga pai o te FTP me te TFTP.
Ina koa, i te wa e whakarewahia ana, ka tono te kaihoko ki te wahitau IP o te tūmau me te tauranga kei te tuwhera te TFTP ritenga (na te kore e hototahi ki te kawa paerewa, i whakaaro ahau he mea tika kia waiho ma te kaiwhakamahi te kaha ki te kowhiri i tetahi tauranga), ka mutu he ka puta he hononga, na te mea ka taea e te kiritaki te tuku i tetahi o nga whakahau - tiki, hoatu ranei, ki te tango, ki te tuku ranei i tetahi konae ki te tūmau. Ka tukuna nga konae katoa ki te aratau rua hei whakangawari i te arorau.
Hei whakatinana i te kawa, e 4 nga karaehe i whakamahia e au:
- TFTPKaihoko
- TFTPServer
- TFTPClientTester
- TFTPServerTester
Na te mea kei te noho nga karaehe whakamatautau mo te tarai i nga mea matua, kaore au e tarai, engari ka noho te waehere ki roto i te putunga; ka kitea he hononga ki te mutunga o te tuhinga. Inaianei ka titiro ahau ki nga karaehe matua.
TFTPKaihoko
Ko te mahi o tenei karaehe ko te hono atu ki tetahi tūmau mamao ma tana ip me te tau tauranga, panuihia he whakahau mai i te awa whakauru (i tenei keehi, ko te papapātuhi), poroporoaki, whakawhiti ki te tūmau, a, i runga ano i a koe me tuku, tango ranei i tetahi konae, whakawhiti, tiki ranei.
Ko te waehere mo te whakarewa i te kiritaki ki te hono atu ki te tūmau me te tatari mo te whakahau mai i te awa whakauru he penei te ahua. He maha nga taurangi o te ao e whakamahia ana i konei ka whakaahuahia i waho o te tuhinga, i roto i nga tuhinga katoa o te kaupapa. Na te iti o te korero, kaore au i te whakahua i a raatau kia kore ai e nui te taumaha o te tuhinga.
public void run(String ip, int port)
{
this.ip = ip;
this.port = port;
try {
inicialization();
Scanner keyboard = new Scanner(System.in);
while (isRunning) {
getAndParseInput(keyboard);
sendCommand();
selector();
}
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
Me titiro ki nga tikanga e kiia ana i tenei poraka o te waehere:
I konei ka tukuna te konae - ma te whakamahi i te matawai, ka whakaatuhia e matou nga ihirangi o te konae hei huinga paita, ka tuhia e matou takitahi ki te turanga, ka mutu ka kati ka whakatuwheratia ano (ehara i te otinga tino kitea, engari ka whakamanahia te tukunga o nga rauemi), i muri iho ka whakaatuhia he panui mo te whakawhiti angitu.
private void put(String sourcePath, String destPath)
{
File src = new File(sourcePath);
try {
InputStream scanner = new FileInputStream(src);
byte[] bytes = scanner.readAllBytes();
for (byte b : bytes)
sout.write(b);
sout.close();
inicialization();
System.out.println("nDonen");
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
Ko tenei wahanga waehere e whakaatu ana i te tiki raraunga mai i te tūmau. He mea iti ano nga mea katoa, ko te poraka tuatahi o te waehere anake te mea pai. Kia mohio ai koe ki te maha o nga paita me panui mai i te turanga, me mohio koe ki te taumaha o te konae kua whakawhitia. Ko te rahi o te konae kei runga i te tūmau e tohuhia ana he tauoti roa, no reira e 4 nga paita ka whakaaetia ki konei, ka huri hei tau kotahi. Ehara tenei i te huarahi Java rawa, he rite tonu mo te SI, engari ka whakatauhia e ia tana raru.
Na he mea iti nga mea katoa - ka whiwhi tatou i te maha o nga paita e mohiotia ana mai i te turanga ka tuhia ki tetahi konae, muri iho ka whakaatuhia he panui angitu.
private void get(String sourcePath, String destPath){
long sizeOfFile = 0;
try {
byte[] sizeBytes = new byte[Long.SIZE];
for (int i =0; i< Long.SIZE/Byte.SIZE; i++)
{
sizeBytes[i] = (byte)sin.read();
sizeOfFile*=256;
sizeOfFile+=sizeBytes[i];
}
FileOutputStream writer = new FileOutputStream(new File(destPath));
for (int i =0; i < sizeOfFile; i++)
{
writer.write(sin.read());
}
writer.close();
System.out.println("nDONEn");
}
catch (Exception e){
System.out.println(e.getMessage());
}
}
Mena he whakahau atu i tua atu i te tiki, i te tuu ranei i whakauruhia ki te matapihi o te kiritaki, ka karangahia te mahi showErrorMessage, e tohu ana he he te whakaurunga. Na te mea iti, e kore ahau e whakahua. He mea whakamere te mahi o te tango me te wehe i te aho whakauru. Ka tukuna e matou te matawai ki roto, mai i tera ka whiwhi matou i tetahi raina kua wehea e nga mokowā e rua me te whakahau, te wahitau puna me te wahitau ūnga.
private void getAndParseInput(Scanner scanner)
{
try {
input = scanner.nextLine().split(" ");
typeOfCommand = input[0];
sourcePath = input[1];
destPath = input[2];
}
catch (Exception e) {
System.out.println("Bad input");
}
}
Te tuku tono—ka tuku i te whakahau i whakauruhia mai i te matawai ki te turanga ka akiaki kia tukuna
private void sendCommand()
{
try {
for (String str : input) {
for (char ch : str.toCharArray()) {
sout.write(ch);
}
sout.write(' ');
}
sout.write('n');
}
catch (Exception e) {
System.out.print(e.getMessage());
}
}
Ko te kaikowhiri he mahi e whakatau ana i nga mahi a te papatono i runga i te aho kua whakauruhia. Ko nga mea katoa i konei kaore i te tino ataahua, a, ko te tinihanga i whakamahia ehara i te mea pai rawa atu me te whakaputa i waho o te poraka waehere, engari ko te take nui mo tenei ko te kore o Java o etahi mea, penei i nga kaikawe i roto i te C #, nga tohu tohu mahi mai i te C++, i te ranei. iti rawa te goto whakamataku me te whakamataku, ka taea e koe te whakatinana i tenei ataahua. Mena ka mohio koe ki te hanga i te waehere kia iti ake te huatau, ka mihi ahau ki nga whakahee i roto i nga korero. Ki ahau nei me hiahia he papakupu String-delegate i konei, engari karekau he kaikawe...
private void selector()
{
do{
if (typeOfCommand.equals("get")){
get(sourcePath, destPath);
break;
}
if (typeOfCommand.equals("put")){
put(sourcePath, destPath);
break;
}
showErrorMessage();
}
while (false);
}
}
TFTPServer
He rereke nga mahi a te tūmau i te mahi a te kiritaki, i te nuinga o te waa, ko nga whakahau ka tae mai ki a ia ehara i te papapātuhi, engari mai i te turanga. He rite tonu etahi o nga tikanga, no reira kare au e whakahua, ka pa noa ahau ki nga rereketanga.
Hei timata, ka whakamahia te tikanga oma, ka whiwhi i te tauranga hei whakaurunga me te tukatuka i nga raraunga whakauru mai i te turanga i roto i te kohanga mutunga.
public void run(int port) {
this.port = port;
incialization();
while (true) {
getAndParseInput();
selector();
}
}
Ko te tikanga tuku, e takai ana i te tikanga writeToFileFromSocket e whakatuwhera ana i te awa tuhi ki tetahi konae me te tuhi i nga paita whakauru katoa mai i te turanga, ka whakaatu i te panui e tohu ana i te otinga angitu o te whakawhitinga ina oti te tuhi.
private void put(String source, String dest){
writeToFileFromSocket();
System.out.print("nDonen");
};
private void writeToFileFromSocket()
{
try {
FileOutputStream writer = new FileOutputStream(new File(destPath));
byte[] bytes = sin.readAllBytes();
for (byte b : bytes) {
writer.write(b);
}
writer.close();
}
catch (Exception e){
System.out.println(e.getMessage());
}
}
Ko te tikanga tiki te tiki i te kōnae tūmau. Ka rite ki te korero kua korerohia i te waahanga i te taha o te kiritaki o te papatono, kia pai ai te whakawhiti i tetahi konae me mohio koe ki tona rahi, ka rongoa i roto i te tauoti roa, no reira ka wehea e ahau ki roto i te huinga o te 4 paita, whakawhiti i te paita-a-paita. ki te turanga, a, ka riro mai, ka kohia ki runga i te kaihoko ki te nama ki muri, ka whakawhitihia e ahau nga paita katoa e hanga ana i te konae, panui mai i te awa whakauru mai i te konae.
private void get(String source, String dest){
File sending = new File(source);
try {
FileInputStream readFromFile = new FileInputStream(sending);
byte[] arr = readFromFile.readAllBytes();
byte[] bytes = ByteBuffer.allocate(Long.SIZE / Byte.SIZE).putLong(sending.length()).array();
for (int i = 0; i<Long.SIZE / Byte.SIZE; i++)
sout.write(bytes[i]);
sout.flush();
for (byte b : arr)
sout.write(b);
}
catch (Exception e){
System.out.println(e.getMessage());
}
};
Ko te tikanga getAndParseInput he rite ki te kiritaki, ko te rereke anake ko te panui raraunga mai i te turanga, kaua mai i te papapātuhi. Ko te waehere kei roto i te putunga, pera i te kaiwhiriwhiri.
I roto i tenei take, ka whakanohoia te arawhiti i roto i te poraka motuhake o te waehere, no te mea i roto i tenei whakatinanatanga, i muri i te otinga o te whakawhitinga, ka tukuna nga rauemi ka noho ano - ano hei whakamarumaru i nga rerenga mahara.
private void incialization()
{
try {
serverSocket = new ServerSocket(port);
socket = serverSocket.accept();
sin = socket.getInputStream();
sout = socket.getOutputStream();
}
catch (Exception e) {
System.out.print(e.getMessage());
}
}
Hei whakarāpopoto:
Katahi ano ka tuhia e matou o maatau rereke ki runga i te kawa whakawhiti raraunga ngawari me te whakaaro me pehea te mahi. Ko te tikanga, kaore au i kite i a Amerika i konei kaore au i tuhi i nga mea hou, engari kaore he tuhinga rite mo Habré, a, hei waahanga o te tuhi i nga raupapa tuhinga mo nga taputapu cmd kaore e taea te pa ki runga.
He Tohutoro:
Source: will.com