Име тръби и контакти
Original on http://home.iae.nl/users/mhx/pipes&socks.html
- Сървърът C код за Windows: бита и парчета
- Сървърът C код за Linux: бита и повече детайли
- “Лепило”, за да се свържете C функции iForth контакти
- “Лепило”, за да се свържете C функции за iForth именувани канали
- Sockets, свързване на клиента към сървъра : пример контакт
- Named тръба, свързваща клиент към сървър : име тръба например
- iTools REL 2.0 архив с гнездо интернет за модерен Forths iTools2
- Библиотеката за гнезда VFX, Gforth, Win32Forth, eForth64, iForth32, iForth64
- IRC
- RSS
- Sendmail
- iTools REL 1.0 архив с гнездо интернет инструменти
- библиотеки – sockets.frt, buffers.frt, sstream.frt
- pmail – например SMTP, изпраща поща до един единствен приемник, или изпраща на група в Usenet.
- поща – POP3 например, получава електронна поща.
- новини – например, NNTP извлича всички нови статии новини от всички абонирани групи. Поддържа прочетете указатели към днешна дата.
- Telnet – просто избирателните телнет например клиент.
- махам – HTTP GET например проверки списък на URL адреси за промени след последното оглед.
Sockets?
Тук е “популярна” не-точното описание. (да ми помогне с по-добра : поща).
Концепцията на контакти е един от начините на извършване на interprocess комуникация (IPC). Тя позволява на програми на същия компютър, за да се търси взаимно и да разговарят помежду си. Но това не спира дотук, контакти работят и за програми, които се движат в мрежата (някъде в интернет, ако сте толкова жични).
За да използвате гнезда за IPC, което трябва да напишете и стартирате сървър и клиент програми. Сървърът работи на локалния ви компютър и е под ваш контрол. Процесите на клиента може да бъде навсякъде в мрежата (собствен компютър (и) като специален случай) и не са непременно от собствения си. Сървъра слуша на порт за клиенти, които искат да направят контакт. За отдалечени клиенти, за да се свържете с вашия сървър, те трябва да знаят името на вашия компютър и номера на порта, който се използва сървъра. Популярни примери със сървъри, които са на разположение на почти
всички компютри са FTP (порт 20), TELNET (порт 23), FINGER ( порт 79), време на деня (порт 13) и QUOTE (порт 17). Вашият собствен сървър, просто взима номер на порт, което се случва да не бъде в употреба (например 3145). Повечето гнезда-IPC работи чрез изпращане на низове, назад и напред между сървъра и клиента с помощта на някакъв вид на публикувания протокол. За собствена употреба Просто мисля, че нещо, което работи. Защото вие използвате Четвърто, протокола е най-лесната част – изпращане на броят на струнни инструменти
и използването ОЦЕНЯВАНЕ ще работи
добре.
В най-лесните си форма, като се започне сървър на вашия компютър изглежда така:
3145 myserver
Ето 3145 е номер на порта на вашия сървър слуша (повече или по-малко произволно качват). “Myserver” е дефиницията на Четвърта двоеточие, съдържащи (вероятно) безкраен цикъл. Тя проверява, ако клиентът се опитва да осъществи контакт на порт 3145, а след това и обмен струни с този клиент, според някои протокол на вашия собствен дизайн (без правила, знам, на разстояние). Socket комуникация е двупосочна.
Клиентската част е толкова просто. Ако приемем, че клиентът работи и на собствения си компютър можете да я стартирате, като този:
S "/ /." 3145 myclient
или
S "frunobulax" 3145 myclient
ако компютърът ви е наречена “frunobulax”. Всеки URL е наред толкова дълго, колкото можете да предоставите валиден номер на порт и вашият сървър е активен там. Имайте предвид, че можете да използвате думата iForth
името на хоста (в-адр ф), за да върнете името на
компютъра.
Ако имате напредък далеч ще научите повече от изтеглянето, свързани с контакта файлове по-горе. Файловете се простират iForth със следните wordset гнездо:
OPEN-SERVICE ( c-addr u port# — socket ) example: S” frunobulax” 3145 OPEN-SERVICE ( — 4 ) CREATE-SERVER ( port# — lsocket ) example: 3145 CREATE-SERVER ( — 16 ) LISTEN ( lsocket /queue — ) example: 16 7 LISTEN ACCEPT-SOCKET ( lsocket — socket ) example: 16 ACCEPT-SOCKET ( — 3 ) READ-SOCKET ( socket c-addr maxlen — c-addr size ) example: 3 PAD 125 READ-SOCKET ( — ‘pad 125 ) WRITE-SOCKET ( c-addr size socket — ) example: PAD 128 3 WRITE-SOCKET CLOSE-SOCKET ( socket — ) example: 3 CLOSE-SOCKET +CR ( c-addr1 u1 — c-addr2 u2 ) appends a hard CR+LF pair to the text BLOCKING-MODE ( socket on/off — ) put the socket in/out of blocking mode SET-SOCKET-TIMEOUT ( u — ) set the global timeout (in ms) on reading sockets GET-SOCKET-TIMEOUT ( — u ) get the global timeout (in ms) on reading sockets
Named Pipes?
Отново “популярна” не-точното описание. (по-добър : поща).
С име тръба е вторият начин на извършване на interprocess комуникация (IPC). Програми на същия компютър (Linux), или навсякъде в мрежата или интернет (позволено само Windows NT 4.0, файлови системи), могат да потърсят взаимно и да разговарят помежду си. Разликата с използването на контакти е, че не е нужно доста произволен номер на порт и специално форматиран (еднакво произволно:-) името на файла. Също така, аз не знам на всякаква публично достъпна именувани канали в интернет. Подобно на контакти, пише Четвърти програми за сървър и клиент края, и IPC работи чрез изпращане на низове, назад и напред между сървър и клиент, с помощта на (публикуван) протокол от вашия собствен дизайн.
В най-лесните си форма, като се започне с име тръба сървър на вашия компютър изглежда така:
S "/ / / тръба / forthserver" serverspeed (Windows)
S "/ Dev / forthserver" serverspeed (Linux)
Тук името на файла определя пътя, клиентите се предприемат, за да вашия сървър (произволно качват). Забележка “/ тръба” част от пътя, това е необходимо за Windows NT. “Serverspeed” е дефиницията на Четвърта двоеточие (вероятно), съдържащ един безкраен цикъл. Тя проверява, ако клиентът се опитва да направи контакт и обмен струни с този клиент, според някои протокол на вашия собствен дизайн. Име тръба комуникация е двупосочна.
Клиентската част е толкова просто. Ако приемем, че клиентът работи и на собствения си компютър можете да я стартирате, като този:
S "/ / / тръба / forthserver" clientspeed
или
S "/ / frunobulax / тръба / forthserver" clientspeed
или
S "/ Dev / forthserver" clientspeed
ако компютърът ви е наречена “frunobulax” (Linux не поддържа именувани канали по мрежата).
Ако имате напредък далеч можете да научите повече от изтеглянето на име тръба свързани файлове, по-горе. Файловете се простират iForth със следните име тръба wordset:
OPEN-NAMED-PIPE ( c-addr u timeout — handle ) example: S” //frunobulax/pipe/clientspeed” 5000 OPEN-NAMED-PIPE ( — 3 ) CREATE&ACCEPT ( c-addr u — handle ) example: S” //frunobulax/pipe/serverspeed” CREATE&ACCEPT ( — 3 ) READ-NAMED-PIPEX ( c-addr maxlen handle — c-addr size ) example: PAD 125 3 READ-NAMED-PIPEX ( — ‘pad 125 ) WRITE-NAMED-PIPE ( c-addr size handle — ) example: PAD 128 3 WRITE-NAMED-PIPE CLOSE-NAMED-PIPE ( handle — ) example: 3 CLOSE-NAMED-PIPE
Може да откриете, че това wordset е малко по-лесно да се разбере от гнездото wordset, въпреки че гнезда са по-гъвкав (може да използвате който и да е URL).
Windows
И двете гнездо и име тръба wordsets работят за iForth (респ. всички Windows и Windows NT 4.0). Обикновено, за UNIX система, дръжки и контакти са съвместими с файловата система на четене и записване във файл ФАЙЛ
и CLOSE файл думи. Поради Microsoftisms това не работи за Windows. Затова iForth е дал за четене / запис / затваряне на действията на нови имена, въпреки че не би било строго необходимо за iForth Linux. Име набор тръба не поддържа множество клиенти, свързващи се към един сървър (изглежда като Windows NT 4.0 го поддържа, но не мога да разбера как)
.
Имайте предвид, че настоящата документация Windows, се посочва, че името сървъри тръба се нуждаят от по-добра от Windows 2000 Server, и име клиенти тръба се нуждаят от по-добра от Windows 2000 Professional. Не можех да получите cliserv2.frt пример, за да работят по моите инсталации на Windows XP Pro
.
Linux
Контактът и име wordsets тръба също работят за Linux. Именувани канали не са толкова полезни, защото те няма да работи по мрежа. Въпреки това, можете да свържете множество клиенти за един сървър, който трябва да позволи изпълнението на Windows, но не означава, че не мога да намеря как да го направя. Име тръби се извършва чрез контакти и модифициран код от “Advanced Програмиране в UNIX” Околна среда “” W. Ричард Стивънс “.
Изпълнение
Има видима разлика в производителността между контакти и именувани канали.
1- ри индикативен показател: 20 Mbytes копирани между две iForths на
машината 1, 2- ри индикативен показател: 20 Mbytes копирани от iForth на машина 2 iForth на
машина 1.
Системи за чорап за изпитване: Windows XP Pro, работи на (1) Intel PIV 3GHz/1GB и (2) Intel Core 2 Duo 2,66 GHz/2GB. Компютри са в мрежа използването на дънната платка Realtek мрежови адаптери (100 Mbit / сек)
. Системи за npipe тест: Windows NT 4.0, работи на (1) Intel Pentium 166MHz/48MB и (2) Intel Pentium 200MHz/48MB. Компютри са в мрежа с помощта на евтини NE2000 клонинги (10 Mbit / сек
).
бенчмарка | процес за четене | процес Б напишете ===========+================+============ ==== чорап т.м. 1 | 72 MB / сек | 732 MB / сек чорап т.м. 2 | 11,5 MB / сек | 2,857 GB / сек npipe т.м. 1 | 15 MB / сек | 15 MB / сек npipe т.м. 2 | 715 KB / сек | 715 KB / сек
(Критериите и показателите бяха също се извършва под Linux и изпълнява още по-добре там.)
Както можете да видите, контакти изглеждат добре за процесите на различни машини, а именувани канали са добри за процесите на същата машина. За Linux трябва да има почти никаква разлика между контакти и именувани канали.
Аз препоръчваме да използвате гнезда за всичко: преносими, бързо и работа в различните мрежи и операционни системи.
