Original article: https://kermitproject.org/k95.html
Cod sursă de transfer de fișiere Kermit compact, rapid, robust și portabil pentru a fi încorporat în dispozitive sau programe C
Versiune: 1.8 Data: 27 mai 2021 Ultima actualizare a acestei pagini: miercuri 24 mai 16:24:30 2023 | DESCARCA |
Anunț cu sursă deschisă: În vigoare din 30 martie 2011 cu versiunea 1.6, E-Kermit este lansat „ca atare” sub Licența BSD cu 3 clauze revizuită .
E-Kermit 1.8 din 26 mai 2021 corectează o eroare în versiunea demonstrativă Unix în care argumentele liniei de comandă -B și -T (pentru a forța modul de transfer al fișierelor binar și, respectiv, text) au fost inversate. Îi mulțumim lui Todd Markley pentru că a raportat-o.
27 mai 2021: toate linkurile FTP din această pagină au fost convertite în HTTP/HTTPS deoarece Chrome și Firefox și cine-știe-ce-alte browsere nu le mai acceptă; detalii aici .
Cuprins
- PROGRAMUL DE CONTROL
- TRANSFER DE FIȘIER
- COD SURSA
- VERSIUNEA UNIX
- PORTARE PE O NOUA PLATFORMĂ
- DEBUGARE
- ISTORIC LANSAREA
- DESCARCA
EK (Embedded Kermit, E-Kermit) este o implementare a protocolului de transfer de fișiere Kermit scris în ANSI C și conceput pentru încorporare în dispozitive sau firmware, pentru utilizare în aplicații în timp real sau pentru construirea de DLL-uri și biblioteci. EKSW este o nouă versiune a E-Kermit care include transportul de pachete cu Windows sliding. EK și EKSW ar trebui reconciliate într-o singură bază de cod, dar până acum acest lucru nu s-a întâmplat.
Ce face E-Kermit
EK îndeplinește doar două funcții: trimiterea fișierelor și primirea fișierelor. Este compact, portabil și complet reintrator. Pe SPARC (RISC), kermit.o este de aproximativ 25K. Pe Intel (CISC) este de aproximativ 15K. Prin reducerea dimensiunilor buffer-ului și eliminarea caracteristicilor opționale sau nedorite, se pot obține dimensiuni mai mici.
Ce NU face E-Kermit
EK nu include funcții client/server; un limbaj de programare de comandă sau script; conversie setului de caractere; criptare transport; sau orice formă de comunicare sau de intrare/ieșire a fișierelor. Nu formează modemuri, nu face conexiuni, nu are încorporat stivă TCP/IP sau interfață cu una externă. Dacă aveți nevoie de aceste caracteristici, atunci ar trebui să utilizați un program Kermit complet, cum ar fi C-Kermit sau Kermit 95 .
EK nu este o aplicație în sine, este o subrutină care trebuie apelată din aplicația dvs. principală. Este util doar dezvoltatorilor, care trebuie să furnizeze aplicația principală sau mediul de apelare, precum și rutinele de i/o pentru fișiere și comunicații. Mediul apelant trebuie, la rândul său, să realizeze și să configureze conexiunea de comunicații dacă este necesară una și nu este deja deschisă. Un exemplu de mediu de apelare și suport I/O sunt furnizate pentru Unix.
Clienții au adaptat EK la diverse medii și platforme, inclusiv Palm Pilot, diverse tipuri de echipamente pentru tehnicieni (de exemplu, pentru diagnosticarea și întreținerea turnurilor de telefonie mobilă), iar uneori contribuie cu adaptările sau rutinele de i/o, iar noi le putem pune la dispoziție. pe o bază strict așa cum este. Nu putem sprijini sau menține codul contribuit de clienți; astfel (de exemplu) dacă este lansată o nouă versiune de EK, modulele contribuite de clienți nu sunt neapărat actualizate. Codul contribuit de client include:
- Microsoft Windows 9x/ME/NT/2000/XP/Vista/7 port serial și i/o fișier pentru EK 1.3 și versiuni ulterioare.
- Wind River VxWorks pentru EK 1.1.
- EK 1.2 tradus în Java .
EK include următoarele caracteristici Kermit Protocol:
- Pachete lungi
- Ferestre glisante cu recuperare a erorilor Go-Back-to- N (repetare selectivă adevărată în EKSW).
- Compresie repetată
- Prefixarea și neprefixarea caracterelor de control
- Prefixare pe 8 biți (pentru transferul de date pe 8 biți pe legături pe 7 biți) (= paritate)
- Pachete de atribute (tip, dimensiune și dată)
- Trimiterea și primirea fișierelor unice sau multiple.
- Comutare automată text/binar pe fișier.
- Toate cele trei tipuri de verificare bloc (sumă de control pe 6 și 12 biți, CRC pe 16 biți).
- Rapoarte de stare (starea protocolului, numele fișierului, dimensiunea, marcajul de timp, octeți până acum).
- Anularea transferului de către oricare dintre părți.
Următoarele caracteristici ale protocolului Kermit nu sunt implementate:
- Ferestre glisante cu retransmisie selectivă (cu excepția EKSW)
- Seturi de caractere
- Blocarea schimburilor
- Client server
Timeout-urile ar fi responsabilitatea programului Kermit de la celălalt capăt al conexiunii sau, dacă este necesar în E-Kermit, rutina de citire a pachetelor dependentă de platformă pe care ați scrie.
Începând cu versiunea 1.5, E-Kermit include construcții de preprocesor pentru a vă permite să excludeți diverse caracteristici, cum ar fi pachete lungi, ferestre glisante și verificări ale blocurilor de ordin mai înalt pentru a obține cea mai mică amprentă de memorie posibilă și poate fi, de asemenea, construit într-o configurație numai de primire. .
PROGRAMUL DE CONTROL
EK este conceput pentru a lucra într-un mediu de lucru multifuncțional, dar nu necesită un astfel de mediu. Programul de control se ocupă de programare. Iată ce trebuie (și/sau poate) să facă programul de control:
- Dacă doriți, deschideți dispozitivul de comunicații, dacă există.
- Dacă doriți, puneți dispozitivul de comunicații, dacă există, în „modul pachet”.
- Inițializați structura kermit cu parametrii de funcționare doriti.
- Apel kermit(K_INIT, ...) pentru ca Kermit să se inițialeze singur.
- Dacă trimiteți fișiere, sunați kermit(K_SEND) pentru a începe transferul.
(Când E-Kermit urmează să primească fișiere, așteaptă pasiv primul pachet de la expeditorul fișierului; astfel, pur și simplu intră în bucla de pachete.) În bucla de pachete, E-Kermit:
- Obține un buffer și citește un pachet primit în el.
- Verifică dacă utilizatorul este întrerupt.
- Apeluri kermit(K_RUN, ...) pentru a face următorul pas din protocol.
- Face orice altceva vrea (de exemplu, execută alte sarcini).
- Închide sau continuă bucla pe baza kermit() cod de retur.
De fiecare dată când programul de control apelează kermit() funcția, aceasta îi acordă permisiunea de a gestiona un pachet; astfel un pachet = o felie de timp. Dacă programul de control nu are altceva de făcut, pur și simplu procesează pachetele continuu, ca un program Kermit obișnuit. În timpul buclei de transfer de date, fiecare kermit() call returnează o structură care conține:
- Starea actuală a protocolului;
- Numele curent al fișierului;
- Dimensiunea fișierului, dacă este cunoscută, sau -1;
- Marca temporală a fișierului, dacă este cunoscută;
- Numărul de octeți transferați până acum.
Când ați terminat, programul de control:
- Restabilește și (dacă se dorește) închide dispozitivul de comunicații.
Codurile de funcție pe care le poate apela programul de control kermit() cu sunt:
K_INIT -- Inițializați structurile de date.
K_SEND -- (Numai trimitere) -- Inițiați trimiterea.
K_RUN -- Rulați protocolul.
K_STATUS -- Returnează un raport de stare în structura k_response.
K_QUIT -- Renunță imediat și în tăcere.
K_ERROR -- Trimiteți pachetul de eroare, apoi ieșiți.
Codurile de returnare ale kermit() functia sunt:
X_OK -- OK, protocol activ.
X_DONE -- OK, protocol finalizat.
X_ERROR -- Eroare fatala.
X_STATUS -- Se returnează starea ca răspuns la K_STATUS.
(De fapt, starea este reajustată la fiecare apel.) Codurile de stare a protocolului sunt:
-1 -- Eroare fatala
0 -- Receptor (protocolul nu rulează)
1 -- Receptorul așteaptă pachetul S
2 -- Receptorul așteaptă pachetul F sau B
3 -- Receptorul așteaptă pachetul A sau D
4 -- Receptorul așteaptă pachetul D sau Z
10 -- Expeditor (protocolul nu rulează)
11 -- Expeditorul a trimis pachetul S (start)
12 -- Expeditorul a trimis pachetul F (nume fișier)
13 -- Expeditorul a trimis un pachet (atribute)
14 -- Expeditorul a trimis pachetul D (date)
15 -- Expeditorul a trimis pachetul Z (EOF)
16 -- Expeditorul a trimis pachetul B (EOT)
TRANSFER DE FIȘIER
Deoarece EK este conceput în primul rând pentru încorporare, nu folosește streaming sau (cu excepția EKSW) ferestre glisante adevărate (deși o mare parte din codul ferestrelor glisante este acolo). Acest lucru se întâmplă din următoarele motive:
- Folosirea protocolului obișnuit ACK/NAK permite programului de control să recâștige controlul după fiecare pachet. Acest lucru îi permite să efectueze mai multe sarcini, să monteze un afișaj grafic de transfer de fișiere, indiferent. Streamingul sau ferestrele glisante ar putea scoate din funcțiune programul de control pentru perioade lungi de timp.
- Streaming-ul sau ferestrele glisante adevărate ar face interfața dintre programul de control și kermit() modul mult mai complicat și, de fapt, ar împinge o mulțime de detalii de protocol în spațiul programului de control, unde acestea nu aparțin.
- Streaming-ul poate fi utilizat numai pe conexiuni fiabile (cum ar fi TCP/IP), dar dispozitivele cu comunicații încorporate utilizează în general porturi seriale.
Lipsa ferestrelor glisante adevărate în EK este compensată prin faptul că EK pretinde că le susține fără a face acest lucru cu adevărat. Acest lucru îi permite partenerului său de trimitere să „streame” pachetele în loc să aștepte ACK-uri după fiecare, atâta timp cât nu există o eroare. Dacă există o eroare, strategia de recuperare este „întoarceți-vă la n ” (sau poate, în unele cazuri, „scăparea erorii”), mai degrabă decât „repetare selectivă”. EKSW, un program separat care nu a fost integrat cu EK (dar ar trebui să fie), acceptă ferestre glisante adevărate cu repetare selectivă; adică sunt retransmise doar acele pachete care de fapt trebuie să fie.
În orice caz, deoarece EK este destinat în primul rând pentru încorporare, se anticipează că întârzierile dus-întors nu vor fi un factor important; conexiunile vor fi, în general, locale, scurte, relativ rapide, iar dacă conexiunea este controlată efectiv, fără erori. Când lipsește controlul eficient al fluxului, viteza și/sau lungimea pachetului și/sau dimensiunea ferestrei pot fi setate la o combinație de valori care maximizează debitul și minimizează pierderea de date.
COD SURSA
Fișierele sursă sunt:
Fișier antet pentru orice #include sau definiție specifice platformei necesare. Obligatoriu, chiar dacă este gol, pentru că kermit.c o include.
Fișier antet pentru toate modulele. Definitia k_date și k_response structuri.
Acesta este motorul de protocol Kermit. Este condus în întregime de datele sale de apel. Toate informațiile de stare sunt salvate în structura de date kermit, care este transmisă prin referință din modulul principal și printre toate funcțiile din modulul kermit și înapoi din nou la modulul principal; astfel, ar trebui să fie posibil ca același modul să transfere mai multe fișiere simultan pe conexiuni diferite. În plus, nu există referințe de bibliotecă în modulul kermit, deloc, nici măcar stdio (cu excepția cazului în care depanarea este activată) și nici /usr/include/* sunt incluse fișierele antet. Reguli pentru kermit.c :
- Fără variabile globale (cu excepția depanării) sau buffere.
- Fără inițializarea matricelor de către compilator.
- Doar pentru siguranță, nici inițializarea scalarilor automate.
- Nicio bibliotecă sau apeluri de sistem, nu #include <...> .
- Toate comunicațiile i/o se realizează prin funcții definite în module separate.
Punctul unic de intrare pentru kermit.c modulul este kermit() funcţie:
int kermit(struct k_data * k, struct k_response * r)
Structura k conține toți parametrii de funcționare, variabilele, informațiile de stare și bufferele; structura r informează apelantul cu privire la starea curentă a protocolului, numele fișierului și informațiile despre fișier și progresul transferului (octeți până acum).
Exemplu de program de control. În testul Unix, acesta este doar tradiționalul principal() , care citește argumentele liniei de comandă, inițializează protocolul, apoi apelează modulul de protocol într-o buclă condusă de stare până când lucrul său este încheiat, apoi curățește. În mediul încorporat, aceste funcții ar fi integrate în programul de control.
Funcții I/O pentru Unix. Înlocuiți-vă propriul modul care implementează aceste funcții în mediul țintă și modificați procedura de construire pentru a face legătura cu acesta. Punctele de intrare și convențiile de apel descrise mai jos.
VERSIUNEA UNIX
Dezvoltarea EK are loc pe o platformă convențională Unix, cum ar fi Mac OS, AIX, Solaris, HP-UX, ... sau în zilele noastre, mai probabil, o varietate de BSD sau Linux, în care EK este construit ca Kermit în mod la distanță. program de transfer de fișiere, similar cu G-Kermit și testat pe un desktop Kermit, cum ar fi K95 sau C-Kermit. NOTĂ: Versiunea Unix funcționează peste stdin/stdout; „linia” este condiționată în cel mai stupid mod posibil ( sistem ("stty...") ). Aceasta dă rezultate variabile; de exemplu, descărcările de la EK pe Solaris ar putea rula la 17Kcps, în timp ce descărcările de pe Linux pe aceeași rețea pe același computer ar putea rula la 1700Kcps. Acest lucru nu merită să vă faceți griji, deoarece EK nu este destinat utilizării în producție pe Unix, care are deja G-Kermit și C-Kermit pentru producție.
Makefile Unix are următoarele obiective (este ușor să adăugați mai multe):
gcc: Creați cu gcc (implicit).
cc: Construiți cu cc.
hp: Build pentru HP-UX.
gccnd: Construiți cu gcc, fără depanare.
gprof: Creați cu gcc, includeți profilarea.
curat: Eliminați fișierele obiect și de bază.
Makefile creează un executabil Unix numit „ek” (kermit încorporat). Proba principal() rutina oferă o interfață simplă de linie de comandă:
$ ./ek -h Utilizare: opțiuni
./ek
Opțiuni:
-r Primește fișiere
-s fișiere Trimite fișiere
-p [neoms] Paritate: nici unul, par, impar, marca, spațiu
-b [123] Tip verificare bloc: 1, 2 sau 3 (implicit = 3)
-k Păstrați fișierele primite incomplet
-B Forțați modul binar
-T Forțați modul text
-R Modul la distanță (vs. local)
-L Modul local (față de distanță)
-E număr Rata de eroare simulată (0- 100)
-d Creați debug.log
-h Ajutor (acest mesaj)
$
Când trimiteți fișiere, dacă nu specificați Text sau Binar, EK scanează fiecare fișier și alege modul text sau binar pe baza conținutului acestuia.
Modul Remote vs Local este folosit numai pentru a activa testul pentru întreruperea de la tastatură a transferului de fișiere.
PORTARE PE O NOUA PLATFORMĂ
Versiunea 1.0 a EK a fost portată la VxWorks de către Airvana, Inc, Chelmsford MA. Pachetul complet VxWorks EK 1.1 este inclus ca exemplu de sistem de producție cu permisiunea Airvana (rețineți că API-ul EK s-a schimbat ușor de atunci, așa că înainte de a putea fi utilizat codul VxWorks, acesta trebuie actualizat). Pentru a porta la o nouă platformă:
- Adăugați o nouă intrare Makefile pentru ținta dvs. sau scrieți propria procedură de compilare.
- Creeaza o platformă.h fișier pentru platforma dvs. Aceasta poate include orice #include sau definiții dorite și poate fi, de asemenea, utilizat pentru a înlocui anumite definiții în kermit.h :
#define NODEBUG pentru a construi fără cod de depanare.
#define HAVE_UCHAR dacă UCHAR este deja definită sau typedef 'd to nesemnat char.
#define HAVE_ULONG dacă ULONG este deja definită sau typedef 'd to nesemnat long.
#definiți IBUFLEN să fie dimensiunea dorită pentru buffer-ul de intrare al fișierului.
#definiți OBUFLEN să fie dimensiunea dorită pentru buffer-ul de ieșire al fișierului.
#define FN_MAX să fie lungimea maximă pentru un nume de fișier.
#define P_PKTLEN pentru a suprascrie lungimea maximă implicită a pachetului.
#define P_WSLOTS pentru a suprascrie sloturile maxime implicite ale ferestrei. - Înlocuiți proba principal.c cu propriul program de control. Utilizați aceleași fișiere antet și convenții de apelare ca în exemplu.
- Copie unixio.c laxxx io.c (numele la alegere), editați-l pentru a funcționa pe platforma dvs. folosind exact aceleași convenții de apelare și ajustați procedura de compilare pentru a se conecta cu noul dvs.xxx io modul în loc de unixio . Rețineți că umpleți tampoanele de intrare și de ieșire ( i_buf[] și o_buf[] ) trebuie definite în dvsxxx io rutină.
Iată câteva sfaturi pentru crearea unui modul I/O:
Se așteaptă ca rutinele de intrare/ieșire a dispozitivului să se ocupe de parametrii de comunicații, inclusiv viteza liniei de comunicație, paritatea și controlul fluxului. În special, Kermit nu se ocupă de paritate, dar totuși trebuie să i se spună despre aceasta. Acest lucru se face în configurație de către principal() . Ta readpkt() și tx_data() rutinele ar trebui să elimine și, respectiv, să adauge paritate, dacă este necesar. Pe conexiunile seriale, poate că UART poate fi programat să facă acest lucru.
Schimbarea API între EK 1.1 și 1.2: convențiile de apelare (listele de argumente ale funcției și valorile returnate) au fost modificate între versiunea 1.1 la 1.2, în principal pentru a oferi tuturor rutinelor acces la structura k într-un mod consistent și, de asemenea, pentru a oferi un feedback mai bun apelantului . În fiecare caz în care a fost făcută o modificare, sunt afișate atât formatul vechi, cât și cel nou.
Funcțiile de intrare/ieșire a dispozitivului sunt:
int
devopen(char * device)
Deschide dispozitivul de comunicații dat. Ar putea fi, de asemenea, o gazdă de rețea, indiferent. Returnează 0 la eșec, 1 la succes.
int
devsettings(char * settings)
Acesta efectuează toate setările necesare pentru dispozitiv, cum ar fi controlul vitezei și al debitului pentru un dispozitiv serial. Deoarece nu există nicio modalitate de a ști care sunt parametrii relevanți, această rutină ia doar un șir, care poate fi în orice format, de exemplu " 9600;8N1 " sau " viteza=57600;debit=rts/cts "; rutina devsettings va trebui să analizeze șirul. Returnează 0 la eșec, 1 la succes.
int
devrestore(void)
Dacă doriți, puneți dispozitivul înapoi devsettings() l-a găsit, de exemplu, chiar înainte de a-l închide.
int
devclose(void)
Închide dispozitivul de comunicații.
int
readpkt(UCHAR * buffer, struct k_data * k) (1,1)
readpkt(struct k_data * k, UCHAR * buffer, lungime int) (1,2)
Această rutină trebuie să facă exact ceea ce face eșantionul: căutați începutul pachetului, apoi copiați toate caracterele până la (dar fără inclusiv) sfârșitul pachetului în bufferul de pachete a cărui adresă este dată. Veți dori să codificați acest lucru cât mai eficient posibil, folosind orice trucuri sunt disponibile pentru dvs.: citiri în buffer care nu blochează, etc. Dacă doriți ca programul Kermit să expire, aici ar trebui să puneți codul. NOTĂ: Timeout-urile nu sunt necesare, deoarece șansele ca partenerul Kermit al lui ek să nu poată expira sunt aproximativ 0. Formatul EK 1.2 pune k ca prim argument pentru coerența cu alte rutine și adaugă un argument pentru lungimea tamponului.
Rețineți caracteristica F_CTRLC. Aceasta este activată în mod implicit. Permite EK să iasă din modul pachet prin trimiterea a trei Ctrl-C consecutive în fluxul de date. În mod normal, nu ar trebui să dezactivați acest lucru, deoarece, chiar dacă expeditorul „neprefixează” Ctrl-C, trei dintre ele la rând ar fi în mod normal restrânse într-o secvență de numărare repetată.
int
tx_data (UCHAR * date, lungime int, paritate scurtă) (1,1)
tx_data(struct k_data * k, UCHAR * data, lungime int) (1,2)
Din nou, trebuie să abordați paritatea (dacă nu este făcută automat de dispozitivul de comunicare sau de driver). Această rutină ar trebui să fie atât eficientă, cât și robustă. Ar trebui să transmită întregul șir de date, altfel eșuează. Vezi unixio.c eșantion pentru ceea ce vreau să spun prin „robust”. În EK 1.2 și mai târziu, setarea de paritate este preluată din structura k .
Funcțiile de intrare/ieșire a fișierelor sunt după cum urmează; desigur, pot fi folosite pentru a citi sau scrie orice -- nu doar fișiere: memorie, bandă, carduri, fascicule laser, controlere de instrumente, orice altceva. Nu contează cum numiți aceste rutine, dar lista de argumente și tipul de returnare trebuie să fie așa cum se arată; de asemenea, dacă le dai nume diferite, va trebui să schimbi prototipurile kermit.h :
int
fișier deschis(UCHAR * nume fișier, mod int, struct k_date * k) (1,1)
openfile(struct k_date * k, UCHAR * nume de fișier, modul int) (1,2)
Deschide fișierul numit în modul dat (1 = citire, 2 = scriere, 3 = adăugare). Returnează X_OK la succes, X_ERROR la eșec.
Informații fișier ULONG
(UCHAR * nume fișier, UCHAR * buf, int buflen, scurt * tip, modul scurt) (1,1)
infofișier(struct k_data * k,UCHAR * nume fișier,UCHAR * buf,int buflen,short * type,short mode) (1,2)
Obține informații despre fișierul local existent specificat: dimensiune, dată și, dacă modul == 0, tipul fișierului (text sau binar). buf și buflen se aplică șirului de dată/oră al fișierului. Returnează X_OK sau X_ERROR.
int
readfile(struct k_data *)
Citește un buffer din fișierul de intrare și, dacă transferul este în modul text, convertește formatul de înregistrare în Kermit Stream CRLF standard. Returnează X_OK sau X_ERROR.
int
writefile(struct k_data *, CHAR * buffer, int lungime)
Scrie un buffer în fișierul de ieșire și, dacă transferul este în modul text, convertește și formatul standard de înregistrare Kermit Stream CRLF în orice este necesar local. Returnează X_OK sau X_ERROR.
int
closefile(struct k_data *, cod UCHAR, mod int)
Închide fișierul. Pentru fișierele de ieșire, desigur, aceasta șterge orice buffer în așteptare în fișier înainte de a-l închide; apoi verifică dacă Kermit-ul expeditor a anulat transferul de fișier înainte de a fi terminat (cod == 'D'), caz în care elimină fișierul parțial în loc să-l păstreze. Modul indică dacă este un fișier de intrare sau de ieșire, astfel încât fișierele primite incomplet pot fi șterse dacă se dorește. Returnează X_OK sau X_ERROR.
Convențiile precise de apelare sunt afișate în unixio.c fişier.
DEBUGARE
Dacă EK a fost construit fără NODEBUG definit, atunci dacă includeți -d opțiunea de pe linia de comandă, versiunea eșantion bazată pe Unix a EK creează un depanare.log fișier în directorul său curent. În versiunea de producție, ați adăuga -DNODEBUG la compilatorul C CFLAGS pentru a elimina codul de depanare. Dimensiunile prezentate mai sus includ depanarea. Puteți implementa funcția de depanare în orice mod doriți în modulul de i/o specific platformei.
ISTORIC LANSAREA
Versiune | Data | Descriere |
1.1 | 2002/10/07 | Lansare inițială. Versiunea VxWorks încă la acest nivel. |
1.2 | 28/01/2003 | API îmbunătățit, port Java (care este încă la acest nivel). |
1.3 | 2004/03/04 | Remediați transferul de fișiere cu HyperTerminal. |
1.4 | 20/03/2004 | Remediați recepția fișierelor goale. |
1.5 | 2004/04/10 | Remediați problema cu pachetele A, permiteți configurații super-mici și/sau numai pentru primire. |
1,51 | 23/09/2004 | Adaptați-vă la Philips XAG30 (John Dunlap) |
EKSW 0,94 | 24/06/2010 | Ferestre glisante adevărate cu retransmisie selectivă ( John Dunlap ) |
1.6 | 30.03.2011 | Publicat și lansat sub Licența BSD revizuită cu 3 clauze . |
1.7 | 06/06/2011 | Protocolul FORCE-3, funcționează împreună cu C-Kermit 9.0 (explicat aici ) |
1.8 | 26/06/2021 | Remediați problema cu argumentul de linie de comandă -B și -T (numai demonstrația Unix) |
DESCARCA
Mai multe implementări diferite E-Kermit sunt disponibile pentru descărcare. E-Kermit în sine, versiunea 1.8, este cea principală. Versiunea 1.7 rămâne disponibilă. Celelalte sunt adaptări la diferite platforme sau limbi care au fost făcute în timpul lansărilor anterioare ale E-Kermit, așa cum este indicat în secțiunea anterioară; cu alte cuvinte, corecțiile găsite în E-Kermit 1.3, 1.4 și 1.5 nu sunt în versiunile VxWorks sau Java, iar versiunea VxWorks folosește API-ul E-Kermit 1.1 în loc de versiunea îmbunătățită 1.2. EKSW are unele modificări la API și alte inconsecvențe care ar trebui anulate înainte de a putea fi integrat cu EK 1.6, dar este perfect utilizabil singur. De fapt, aceasta este versiunea care rulează în noua generație de plutitoare oceanice Apex-EMși a fost testat mai amănunțit în condiții mai adverse decât orice altă implementare a protocolului Kermit. Dând naștere versiunii 1.7, care implementează noul protocol de pachete de verificare a erorilor Force-3 . (EKSW ar trebui să primească și asta la un moment dat.)
Nume | Descriere | gudron * | Zip | Fișiere sursă |
E-Kermit 1.8 | Portabil pe toate platformele, cu demo Unix. | Descarca | Descarca | Descarca |
E-Kermit 1.7 | Portabil pe toate platformele, cu demo Unix. | Descarca | Descarca | Descarca |
EKSW 0,94 | E-Kermit cu ferestre glisante adevărate, adaptate la Linux. | Descarca | Descarca | Descarca |
EKVX 1.1 | E-Kermit 1.1 adaptat la VxWorks. | Descarca | Descarca | Descarca |
Java | E-Kermit 1.2 convertit în Java | Descarca | Descarca | Descarca |
Simirid | Tester de stres protocol Kermit [ descriere ] | Descarca | Descarca | Descarca |
* Nu sunt comprimate, nu sunt necesare, sunt foarte mici.