E – K e r m i t

Арыгінал даступны на сайце kermitproject.org

Кампактны, хуткі, надзейны, партатыўны пратакол перадачы файлаў Kermit для ўбудавання

Версія: 1.7

Дата: 6 чэрвеня 2011 г.

Гэта старонка абноўлена: 9 красавіка 2019 года

Аб’ява з адкрытым зыходным кодам: 30 сакавіка 2011 года з версіяй 1.6 E-Kermit  выпускаецца “як ёсць” у адпаведнасці з Revised 3-Clause BSD License.

Змест

  1. ПРАГРАММА КІРАВАННЯ
  2. ПЕРАДАЧА ФАЙЛАЎ
  3. ЗЫХОДНЫ КОД
  4. ВЕРСІЯ UNIX
  5. ПЕРАНОС НА НОВУЮ ПЛАТФОРМУ
  6. АДЛАДКА
  7. ГІСТОРЫЯ РЭЛІЗАЎ
  8. СКАЧАЦЬ

EK (Embedded Kermit, E-Kermit) – гэта рэалізацыя пратакола перадачы файлаў Kermit, напісанага ў ANSI C і прызначана для ўбудавання ў прылады і прашыўкі, выкарыстання ў прыкладанне ў рэжыме рэальнага часу або для стварэння DLL і бібліятэк. EKSW – гэта новая версія E-Kermit, якая ўключае ў сябе сапраўдную рассоўную пакетную перадачу. EK і EKSW павінны быць узгоднены ў адзіную базу кода, але да гэтага часу гэтага не адбылося.

Што E-Kermit робіць

EK выконвае толькі дзве функцыі: адпраўка файлаў і атрыманне файлаў. Ён кампактны, партатыўны і  выкарыстоўваецца паўторна. На SPARC (RISC), kermit.o складае каля 25K. На Intel (CISC) гэта каля 15K. Памяншаючы памеры буфера і ухіляючы дадатковыя або непажаданыя функцыі, можна дамагчыся меншых памераў.

Што E-Kermit НЕ РОБІЦЬ

EK не ўключае функцыі кліент/сервер; мову праграмавання каманд або скрыптоў; пераўтварэнне знакаў; транспартнае шыфраванне; або любой формы сувязі або ўводу/вываду файлаў. Ён не набірае мадэмы, не ўстанаўлівае сувязі, у яго няма ўбудаванага стэка TCP/IP. Калі вам патрэбныя гэтыя функцыі, вам варта выкарыстоўваць поўную праграму Kermit, такую як C-Kermit  або  Kermit 95.

EK не з’яўляецца самім прыкладаннем, гэта падпраграма, якая выклікаецца з вашага асноўнага прыкладання. Ён карысны толькі распрацоўшчыкам, якія павінны даць  прыкладанне або выклікаць сераду, а таксама падпраграмы ўводу/вываду файлаў і паведамленняў. У сваю чаргу вызав серады павінен ажыццяўляць і наладжваць сувязь, калі такая неабходна і яшчэ не адкрыта. Для Unix прадастаўляецца прыкладны вызав серады і падтрымка ўводу/вываду.

Кліенты адаптавалі EK да розных серадах і платформах, уключаючы Palm Pilot, розныя віды абсталявання для тэхнікаў (напрыклад, для дыягностыкі і абслугоўвання вежаў сотавых тэлефонаў), і часам яны ўносяць свае адаптацыі або працэдуры ўводу/вываду, і мы можам зрабіць іх даступнымі на строгай основе. Мы не можам падтрымліваць код, які прадстаўляецца кліентам; такім чынам (напрыклад), калі выпушчаная новая версія EK, модулі, дададзеныя карыстальнікам, неабавязкова абнаўляюцца. Код, які ўносіць кліент, уключае:

  • Microsoft Windows 9x/ME/NT/2000/XP/Vista/7 serial-port і ўвод/вывад файла для EK 1.3 і больш позняй версіі.
  • Wind River VxWorks для EK 1.1
  • EK 1.2 пераведзены на Java.

EK ўключае наступныя функцыі Kermit Protocol:

  • Доўгія пакеты
  • Рассоўныя вокны з аднаўленнем памылак Go-Back-to-N (праўдзівы выбарачны паўтор у EKSW).
  • Сціск з паўтарэнннем
  • Прэфікс упраўляючага сімвала і наадварот
  • 8-бітны прэфікс (для перадачы 8-бітных даных на 7-бітныя спасылкі) (= парытэт)
  • Пакеты атрыбутаў (тып, размер і дата)
  • Адпраўка і атрыманне аднаго або некалькіх файлаў.
  • Аўтаматычнае пераключэнне паміж тэкставымі і бінарнымі рэжымамі.
  • Усе тры тыпу праверкі блокаў (6- і 12-бітная кантрольная сума, 16-бітная CRC).
  • Справаздачы аб стане спраў (стан пратаколу, імя файла, размер, адзнака часу, байты і гэтак далей).
  • Адмена перадачы любога з бакоў.

Наступныя функцыі Kermit Protocol якія не рэалізаваны:

  • Рассоўныя вокны з выбарачнай паўторнай перадачай (акрамя EKSW)
  • Наборы знакаў
  • Блакаванне змяненняў
  • Кліент/сервер

Тайм-аўты будут адказныя за праграму Kermit на іншым канцы злучэння або, калі неабходна, у самым E-Kermit, які залежыць ад платформы працэдуры чытання пакетаў, якую вы напішаце.

Пачынаючы з версіі 1.5, E-Kermit ўключае ў сябе канструкцыі прэпрацесара, якія дазваляюць выключаць розныя функцыі, такія як доўгія пакеты, рассоўныя вокны і праверкі блокаў больш высокага парадку для дасягнення найменшага магчымага аб’ёму памяці, а таксама могуць быць створаны ў канфігурацыі толькі для прыёму.

ПРАГРАММА КІРАВАННЯ

EK прызначаны для працы ў сумеснай шматзадачнай асяроддзі, але не патрабуе такога асяроддзя. Праграма кіравання клапоціцца пра планаванне. Вось што павінна (і/або можа) рабіць праграма кіравання:

  • Пры жаданні адкрыць камунікацыйныя прылады, калі яны ёсць.
  • Пры жаданні ўсталяваць камунікацыйныя прылады, калі яны ёсць, у «пакетны рэжым».
  • Ініцыялізаваць kermit struct з патрэбнымі працоўнымі параметрамі.
  • Выклікаць kermit (K_INIT, …), каб Kermit ініцыялізаваў сябе.
  • Пры адпраўцы файлаў выклікаць kermit (K_SEND), каб пачаць перадачу.

(Калі E-Kermit атрымлівае файлы, ён пасіўна чакае першага пакета ад адпраўніка файла, таму ён проста ўваходзіць у цыкл пакета.) У цыкле пакетаў E-Kermit:

  • Атрымлівае буфер  і счытвае яго ўваходны пакет.
  • Правярае перапыненне карыстальніка.
  • Выклікае kermit (K_RUN, …), каб зрабіць наступны крок у пратаколе.
  • Робіць усё, што хоча (напрыклад, выконвае іншыя задачы).
  • Выходзіць ці працягвае цыкл на аснове кода вяртання kermit().

Кожны раз, калі праграма кіравання выклікае функцыю kermit(), гэта дае дазвол на апрацоўку аднаго пакета; такім чынам, адзін пакет = адзін зрэз. Калі праграме кіравання больш няма чаго рабіць, яна проста апрацоўвае пакеты бесперапынна, як звычайная праграма Kermit. Знаходзячыся ў цыкле перадачы дадзеных, кожны званок kermit() вяртае структуру, якая змяшчае:

  • Цяперашні стан пратакола;
  • Цяперашняе імя файла;
  • Размер файла, калі ён вядомы, або -1;
  • Адзнака часу файла, калі яна вядомая;
  • Колькасць перададзеных байтаў.

Калі гэта будзе зроблена, праграма кіравання:

  • Аднаўляе і (пры неабходнасці) закрывае камунікацыйная прылада.

Коды функцый, з дапамогай якіх праграма кіравання можа выклікаць kermit():

K_INIT            —   Ініцыялізацыя структур даных.

K_SEND            —   (Толькі адпраўка) — ініцыяваць адпраўку.

K_RUN              —   Запусціць пратакол.

K_STATUS        —   Вяртанне справаздачу аб стане ў структуры k_response.

K_QUIT            —   Выйсці неадкладна і ціха.

K_ERROR          —    Адправіць пакет памылак, а затым выйсці.

Коды вяртання функцыі kermit():

X_OK               —   ОК, пратакол актыўны.

X_DONE           —   ОК, пратакол завершаны.

X_ERROR         —   Фатальная памылка.

X_STATUS       —   Зварот статусу ў адказ на K_STATUS.

(На самай справе статус перанастройваецца пры кожным званку.) Коды стану пратакола:

-1                     —   Фатальная памылка

 0                     —   прыёмнік (пратакол не працуе)

 1                     —   Прыёмнік чакае пакет S

 2                     —   Прыёмнік чакае пакет F або B

 3                     —   Прыёмнік чакае пакета A або D

 4                     —   Прыёмнік чакае пакета D або Z

10                    —   Адпраўнік (пратакол не працуе)

11                    —   Адпраўнік адправіў пакет S (пачатак)

12                    —   Адпраўнік адправіў F-пакет (імя файла)

13                    —   Адпраўнік адправіў пакет (атрыбуты)

14                    —   Адпраўнік адправіў пакет D (даныя)

15                    —   Адпраўнік адправіў пакет Z (EOF)

16                    —   Адпраўнік адправіў пакет B (EOT)

ПЕРАДАЧА ФАЙЛАЎ

Паколькі EK прызначаны ў першую чаргу для ўбудавання, ён не выкарыстоўвае струменевыя або (за выключэннем EKSW) праўдзівыя рассоўныя вокны (хоць вялікая частка кода рассоўных вокнаў ёсць). Гэта адбываецца па наступных прычынах:

  • Выкарыстанне звычайнага пратакола ACK / NAK дазваляе праграме кіравання аднаўляць кантроль пасля кожнага пакета. Гэта дазваляе яму выконваць шматзадачнасць, адлюстроўваць графічны дысплей перадачы файлаў, што заўгодна. Струменевыя або рассоўныя вокны могуць вывесці праграму кіравання з бізнесу на працягу працяглых перыядаў часу.
  • Струменевыя або сапраўдныя рассоўныя вокны зробяць інтэрфейс паміж праграмай кіравання і модулем kermit() больш складаным, і на самой справе будуць падштурхоўваць мноства дэталяў пратаколу ў прастору праграмы кіравання, дзе яны не належаць.
  • Перадача можа выкарыстоўвацца толькі для надзейных злучэнняў (напрыклад, TCP / IP), але прылады з ўбудаванай сувяззю звычайна выкарыстоўваюць серыяльныя парты.

Адсутнасць сапраўдных рассоўных вокнаў у EK кампенсуецца тым, што EK прыкідваецца, што падтрымлівае іх, не робячы гэтага. Гэта дазваляе партнёру адпраўкі «перадаваць» пакеты, а не чакаць ACK пасля кожнага з іх, калі няма памылкі. Калі ёсць памылка, стратэгія аднаўлення «вернецца да n» (ці, магчыма, у некаторых выпадках «памылка»), а не «выбарачнае паўтарэнне». EKSW, асобная праграма, якая не была інтэграваная з EK (але павінна быць), падтрымлівае сапраўдныя рассоўныя вокны з выбарачным паўторам; гэта значыць, перадаюцца толькі тыя пакеты, якія на самой справе павінны быць.

У любым выпадку, паколькі EK прызначана перш за ўсё для ўбудавання, чакаецца, што затрымкі ў абодва канца не будуць вялікім фактарам; злучэння, як правіла, лакальныя, кароткія, адносна хуткія, і калі злучэнне эфектыўна кантралюецца патокам, без памылак. Калі эфектыўнага кіравання патокам не хапае, хуткасць і/або даўжыня пакета і/або памер акна могуць быць устаноўлены ў камбінацыю значэнняў, якія максімізуюць прапускную здольнасць і мінімізуюць страту даных.

ЗЫХОДНЫ КОД

 Зыходныя файлы:

platform.h

Файл загалоўка для любых неабходных для платформы #includes або вызначэнняў. 

Неабходны, нават калі ён пусты, бо kermit.c уключае яго.

kermit.h

Файл загалоўка для ўсіх модуляў. Вызначэнне k_data і k_response структуры.

kermit.c

Гэта механізм пратаколу Kermit. Ён цалкам залежыць ад даных выкліку. Уся інфармацыя стану захоўваецца ў структуры даных kermit, якая перадаецца па спасылцы з асноўнага модуля і сярод усіх функцый модуля kermit і назад у асноўны модуль; такім чынам, адзін і той жа модуль павінен адначасова перадаваць некалькі файлаў на розныя злучэння. Акрамя таго, у модулі kermit няма спасылак на бібліятэкі, ні адзін наогул, нават stdio (акрамя выпадкаў, калі ўключана адладка), а таксама няма файлаў загалоўкаў /usr / include/*. Правілы для kermit.c:

  • Няма глабальных зменных (акрамя адладкі) або буфераў.
  • Няма ініцыялізацыі масіваў кампілятарам.
  • Проста для бяспекі, не ініцыялізіруе аўтаматычных скаляраў.
  • Няма бібліятэчных або сістэмных выклікаў, няма #include <…>.
  • Усе аперацыі ўводу/вываду выконваюцца функцыямі, вызначанымі ў асобных модулях.

Адзінай кропкай уваходу для модуля kermit.c з’яўляецца функцыя kermit():

int kermit(struct k_data * k, struct 

k_response * r)

Структура k змяшчае ўсе працоўныя параметры, зменныя, інфармацыю аб стане і буферы; r-структура інфармуе абанента аб бягучым стане пратаколу, імя файла і інфармацыі аб файле, а таксама аб ходзе перадачы (байты).

main.c

Выбарка праграмы кіравання. У тэставым стэндзе Unix гэта проста традыцыйная функцыя main (), якая счытвае аргументы каманднага радка, ініцыялізуе пратакол і затым выклікае модуль пратакола ў цыкле, кіраваным становішчам, да таго часу, пакуль не будзе выканана яго праца, а затым ачысціцца. Ва ўбудаванай асяроддзі гэтыя функцыі будуць інтэграваныя ў праграму кіравання.

unixio.c

Функцыі ўводу/вываду ў Unix. Заменіць свой уласны модуль, які рэалізуе гэтыя функцыі ў мэтавай асяроддзі і змяніць працэдуру зборкі, каб звязаць з ім. Кропкі ўваходу і пагадненні аб выкліках, апісаны ніжэй.

ВЕРСІЯ UNIX

Распрацоўка EK адбываецца на звычайнай платформе Unix, напрыклад, Solaris, HP-UX або Linux, у якой EK пабудаваны як праграма перадачы файлаў Kermit з дыстанцыйным рэжымам, падобная G-Kermit, і пратэставаная супраць настольнага Kermit такім чынам як K95 або C-Kermit. ЗАЎВАГА. Версія Unix працуе над stdin/stdout; «лінія» абумоўлена самым суровым чынам ((system(“stty …”)). Гэта дае зменныя вынікі; напрыклад загрузкі з EK на Solaris могуць працаваць на хуткасці 17Kcps, тады як загрузка з Linux у адной сеткі на том жа кампутары можа працаваць на хуткасці 1700Kcps. Не варта хвалявацца з-за таго, што EK не прызначаны для выкарыстання ў Unix, які ўжо мае G-Kermit і C-Kermit для вытворчасці.

Unix makefile мае наступныя мэты (лёгка дадаць больш):

gcc:     Зборка з gcc (па змаўчанні).

cc:       Зборка з дапамогай cc.

hp:       Зборка для HP-UX.

gccnd: Зборка з gcc, без адладкі.

gprof:  Стварыце з дапамогай gcc, уключыце прафіляванне.

clean:  Выдаліць файлы аб’ектаў і ядра.

Мakefile стварае выкананы файл Unix пад назвай «ek» (убудаваны kermit). Працэдура sample main() падае просты інтэрфейс каманднага радка:

$ ./ek -h

Usage: ./ek options

Options:

 -r                   Receive files

 -s files           Send files

 -p [neoms]     Parity: none, even, odd, mark, space

 -b [123]          Block check type: 1, 2, or 3 (default = 3)

 -k                   Keep incompletely received files

 -B                   Force binary mode

 -T                    Force text mode

 -R                   Remote mode (vs local)

 -L                    Local mode (vs remote)

 -E number      Simulated error rate (0-100)

 -d                   Create debug.log

 -h                    Help (this message)

$

Пры адпраўцы файлаў, калі вы не ўказваеце Тэкст або Бінарны файл, EK скануе кожны файл і выбірае тэкставы або бінарны рэжым на аснове яго змесціва.

Аддалены/мясцовэ рэжым выкарыстоўваецца толькі для ўключэння тэсту на перапыненне перадачы файлаў.

ПАРТИРОВКА ДА НОВАЙ ПЛАТФОРМЫ

Версія 1.0 EK была перанесена ў VxWorks кампаніяй Airvana, Inc, Chelmsford MA. Поўны пакет VxWorks EK 1.1 уключаны ў якасці прыкладу вытворчай сістэмы з дазволу Airvana (звярніце ўвагу, што з тых часоў EK API трохі змяніўся, таму, перш чым выкарыстоўваць код VxWorks, ён павінен быць абноўлены). Каб падключыцца да новай платформе:

  • Дадайце новую запіс Makefile для сваёй мэты або напішыце ўласную працэдуру зборкі.
  • Стварыце файл platform.h для сваёй платформы. Гэта можа ўключаць любыя патрабаваныя #include або definitions, а таксама можа выкарыстоўвацца для пераазначэння пэўных азначэнняў ў kermit.h:

#define NODEBUG для стварэння без кода адладкі.

#define HAVE_UCHAR, калі UCHAR ужо вызначаны або typedef’d сімвал  без знака

#define HAVE_ULONG, калі ULONG ужо вызначаны або typedef’d сімвал  без знака

#define IBUFLEN – жаданы памер для ўваходнага буфера файла.

#define OBUFLEN – жаданы памер для выхаднога буфера.

#define FN_MAX як максімальная даўжыня для імя файла.

#define P_PKTLEN, каб перавызначыць максімальную даўжыню пакета па змаўчанні.

#define P_WSLOTS, каб перавызначыць максімальныя інтэрвалы вокнаў па змаўчанні.

  • Заменіце ўзор main.c уласнай праграмай кіравання. Выкарыстоўвайце тыя ж includes і выклікаюць пагаднення, што і ў прыкладзе.
  • Скапіруйце файл unixio.c ў xxxio.c (імя па вашаму выбару), адрэдагуйце яго для працы на сваёй платформе, выкарыстоўваючы сапраўды такія ж пагадненні аб выкліках, і адкарэктуе працэдуру зборкі, каб звязаць ваш новы модуль xxxio замест unixio. Звярніце ўвагу, што запаўненне ўвода і вываду буфераў (i_buf [ ] і o_buf [ ]) павінны быць вызначаны ў вашай працэдуры xxxio.

Вось некалькі саветаў па стварэнні модуля ўводу/вываду:

Чакаецца, што працэдуры ўводу/вываду прылады будуць апрацоўваць самі параметры сувязі, уключаючы хуткасць лініі сувязі, кантроль цотнасці і кіраванне патокам. У прыватнасці, Kermit не спраўляецца з парытэтам, але ўсё роўна трэба сказаць пра гэта. Гэта робіцца ў наладзе main(). Пры неабходнасці вашы праграмы readpkt() і ttx_data() павінны падзяляць і дадаваць парытэт, калі гэта неабходна. Пры паслядоўных падлучэннях, магчыма, UART можа быць запраграмаваны для гэтага.

API Змена паміж EK 1.1 і 1.2: Пагаднення аб выкліках (спісы аргументаў функцый і зваротных значэнняў) былі змененыя паміж версіямі 1.1 і 1.2, галоўным чынам, каб забяспечыць доступ да кожнай структуры k паслядоўна, а таксама забяспечыць лепшую зваротную сувязь з выклікалым абанентам. У кожным выпадку, калі было зроблена змяненне, прыведзены як стары, так і новы фармат.

Функцыі ўводу/вываду прылады:

int

devopen (char * device)

Адкрывае дадзеную прыладу сувязі. Таксама можа быць сеткавым хастом. Вяртае 0 пры збоі, 1 пры паспяховым выкананні.

int

devsettings (char * settings)

Гэта выконвае ўсе неабходныя ўстаноўкі для прылады, як хуткасць і рэгуляванне патоку для серыйнага прыбора. Паколькі няма ніякага спосабу даведацца, што адпаведныя параметры, гэтая працэдура проста прымае радок, якая можа быць у любым фармаце, напрыклад “9600;8N1” or “speed=57600;flow=rts/cts”; працэдура devsettings павінна будзе прааналізаваць радок. Вяртае 0 пры збоі, 1 пры паспяховым выкананні.

int

devrestore (void)

Калі неабходна, вярніце прыладу назад, як заўважыце яго devsettings (). як раз перад закрыццём.

int

devclose (void)

Закрывае камунікацыйную прыладу.

int

readpkt (UCHAR * buffer, struct k_data * k) (1.1)

readpkt (struct k_data * k, UCHAR * buffer, int length) (1.2)

Гэтая працэдура павінна выконваць менавіта тое, што робіць выбарка: пошук пачатку пакета, а затым капіраванне ўсіх сімвалаў (але не уключаючы) да канца пакета ў пакетны буфер, адрас які паказаны. Вы захочаце скампіляваць гэта як мага больш эфектыўна, выкарыстоўваючы любыя трукі, якія даступныя для вас. Калі вы хочаце, каб ваша праграма Kermit адчувала таймаўт, тут вы павінны змясціць код. ЗАЎВАГА. Тайм-аўты не патрэбныя, бо верагоднасць таго, што ek Kermit-партнёр не можа выйсці, складае каля 0. Фармат EK 1.2 змяшчае k ў якасці першага аргументу для ўзгодненасці з іншымі падпраграмамі і дадае аргумент даўжыні буфера.

Звярніце ўвагу на функцыю F_CTRLC. Гэта ўключана па змаўчанні. Гэта дазваляе EK выходзіць з пакетнага рэжыму, даслаўшы яму тры паслядоўных Ctrl-C ў струмень даных. Звычайна вам не трэба адключаць гэта, так як, нават калі адпраўнік з’яўляецца “unprefixing” Ctrl-C, тры з іх у радку звычайна будуць згорнутыя ў паслядоўнасць паўтарэння.

int

tx_data (UCHAR * data, int length, short parity) (1.1)

tx_data (struct k_data * k, UCHAR * data, int length) (1.2)

Тут зноў трэба прытрымлівацца роўнасці (калі яно не выконваецца аўтаматычна прыладай сувязі або драйверам). Гэтая працэдура павінна быць эфектыўнай і надзейнай. Ён павінен перадаваць усю радок даных, інакш збой. См. unixio.c, што я маю на ўвазе пад «robust». У EK 1.2 і пазней, парытэтны ўрэгуляванне паднята з k структуры.

Функцыі ўводу/вываду файла наступныя: яны могуць выкарыстоўвацца для чытання або запісы чаго заўгодна – не толькі файлаў: памяці, стужкі, карт, лазерных прамянёў, кантралёраў прыбораў, што заўгодна. Не мае значэння, што вы называеце гэтымі працэдурамі, але спіс аргументаў і тып якое вяртаецца значэння павінны быць такімі, як паказана; таксама, калі вы дасце ім розныя імёны, вам трэба будзе змяніць прататыпы ў kermit.h:

int

openfile (UCHAR * filename, int mode, struct k_date * k) (1.1)

openfile (struct k_date * k, UCHAR * filename, int mode) (1.2)

Адкрывае найменны файл у зададзеным рэжыме (1 = чытанне, 2 = запіс, 3 = даданне). Вяртае X_OK на поспех, X_ERROR пры збоі.

ULONG

fileinfo (UCHAR * filename, UCHAR * buf, int buflen, short * type, short mode) (1.1)

fileinfo (struct k_data * k, UCHAR * filename, UCHAR * buf, int buflen, short * type, short mode) (1.2)

Атрымлівае інфармацыю аб паказаным існуючым лакальным файле: размер, дата і, калі mode == 0, тып файла (тэкставы або двайковы). buf і buflen прымяняюцца да радка даты/часу файла. Вяртае X_OK або X_ERROR.

int

readfile (struct k_data *)

Чытае буфер з уваходнага файла, і калі перадача ў тэкставым рэжыме, канвертуе фармат запісу ў стандартны CRLF Cermit Stream. Вяртае X_OK або X_ERROR.

int

writefile (struct k_data *, CHAR * buffer, int length)

Запісвае буфер ў выходны файл, і калі перадача ў тэкставым рэжыме таксама пераўтворыць стандартны фармат запісу CRLF патоку Kermit у тое, што патрабуецца лакальна. Вяртае X_OK або X_ERROR.

int

closefile (struct k_data *, UCHAR code, int mode)

Закрывае файл. Для выходных файлаў, вядома, гэта скідае любыя якія чакаюць буферы ў файл перад яго закрыццём; то ён правярае, адмяняе Ці перадача Kermit перадачу файла да яго завяршэння (код == ‘D’), і ў гэтым выпадку ён адкідвае частковы файл, а не захоўвае яго. Рэжым паказвае, ці з’яўляецца гэта уваходным або выхадных файлам, таму пры неабходнасці могуць быць выдаленыя не цалкам атрыманыя файлы. Вяртае X_OK або X_ERROR.

Дакладныя пагаднення аб выкліках паказаны ў файле unixio.c.

АДЛАДКА

Калі EK быў створаны без вызначэння NODEBUG, то, калі вы ўключыце ў камандным радку параметр -d, прыкладны версія EK на аснове Unix стварае файл debug.log ў бягучым каталогу. У вытворчай версіі вы павінны дадаць -DNODEBUG да кампілятара C CFLAGS, каб выключыць код адладкі. Памеры, паказаныя вышэй, ўключаюць адладку. Вы можаце рэалізаваць функцыю адладкі любым спосабам, які вы хочаце ў сваім модулі ўводу-высновы для платформы.

ГІСТОРЫЯ РЭЛIЗАУ

Версія ДатаАпісанне
1.12002/10/07   Першапачатковы выпуск. Версія VxWorks ўсё яшчэ знаходзіцца на гэтым узроўні.
1.22003/01/28алепшаны API, порт Java (які ўсё яшчэ знаходзіцца на гэтым узроўні).
1.32004/03/04Выпраўце перадачу файлаў з дапамогай HyperTerminal.
1.42004/03/20Выпраўленне прыёму пустых файлаў
1.52004/04/10Выправіць праблему з A-пакетамі, дазволіць сверхмалые і / або налады толькі для прыёму.
1.512004/09/23Адаптацыя да Philips XAG30 (Джон Данлэп)
EKSW 0.942010/06/24Сапраўдныя рассоўныя вокны з выбарачнай паўторнай перадачай (Джон Данлэп)
1.62011/03/30Выдадзена і выпушчана пад ліцэнзіяй 3-Clause Revised BSD.
1.72011/06/06Пратакол FORCE-3 2011/06/06 працуе сумесна з C-Kermit 9.0 (тлумачыцца тут)

СКАЧАЦЬ

Для загрузкі даступны некалькі розных рэалізацый E-Kermit. Сам E-Kermit, версія 1.7, з’яўляецца асноўным. Іншыя – адаптацыя да розных платформах або мовах, якія былі зробленыя падчас папярэдніх выпускаў E-Kermit, як паказана ў папярэдняй частцы; іншымі словамі, выпраўлення, знойдзеныя ў E-Kermit 1.3, 1.4 і 1.5, ня знаходзяцца ў версіях VxWorks або Java, а версія VxWorks выкарыстоўвае API E-Kermit 1.1 API замест палепшанай версіі 1.2. EKSW мае некаторыя змены ў API і іншыя неадпаведнасці, якія варта адмяніць, перш чым ён можа быць інтэграваны з EK 1.6, але зусім карысны сам па сабе. Фактычна, гэта версія, якая працуе ў новым пакаленні Apex-EM ocean floats, і была пратэставаная больш старанна ў больш неспрыяльных умовах, чым, магчыма, любая іншая рэалізацыя пратаколу Kermit. Вяртаючыся да версіі 1.7, якая рэалізуе новы пратакол праверкі пакетаў Force-3. (EKSW атрымае гэта таксама ў нейкі момант.)

  HTTPFTP
NameDescriptionTar*ZipSource Files
E-Kermit 1.7Партатыўны на ўсіх платформах, з Unix дэма.СкачацьСкачацьСкачаць
EKSW 0.94E-Kermit з праўдзівымі рассоўнымі вокны, адаптаванымі да Linux.СкачацьСкачацьСкачаць
EKVX 1.1 E-Kermit 1.1 адаптаваны да VxWorks.СкачацьСкачацьСкачаць
JavaE-Kermit 1.2 канвертаваны ў JavaСкачацьСкачацьСкачаць
SimiridТэстар стрэсу пратаколу [Апісанне]СкачацьСкачацьСкачаць

* Не сціснутыя, няма неабходнасці, яны вельмі малыя.

Націсніце тут, каб атрымаць доступ да FTP ўсіх файлаў E-Kermit