|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Опис протоколу TFTPЗастосування Узагальнений алгоритм тестування тестування системи (програм клієнт та сервер) l Старт сервера. l Старт клієнта з цієї ж машини. l Старт клієнта з іншої машини. l Одночасна робота декількох клієнтів. 2. Пооператорна схема алгоритму програми клієнт з фрагментами программи (з вимірюванням часу передачі/прийому пакета). 2.1 Ініціалізація бібліотеки WSAStartup(02, WSA); 2.2 Відкриття сокету, підключення Result:= TRUE; Sock:= socket(AF_INET, SOCK_STREAM, 0); Addr.sin_family:= AF_INET; Addr.sin_port:= htons(5005); Addr.sin_addr.S_addr:= localhost; bind(Sock, Addr, SizeOf(Addr)); listen(Sock, SOMAXCONN); 2.3 Відправка запиту на зчитування/запису файлу. 2.4 Прийняття відповіді. 2.5 Відсилання підтвердження. 2.6 Відключення. 3. Пооператорна схема алгоритму програми сервер з фрагментами програми. 3.1 Ініціалізація бібліотеки WSAStartup(02, WSA); 3.2 Відкриття сокету. Result:= TRUE; Sock:= socket(AF_INET, SOCK_STREAM, 0); Addr.sin_family:= AF_INET; Addr.sin_port:= htons(5005); Addr.sin_addr.S_addr:= htonl(INADDR_ANY); bind(Sock, Addr, SizeOf(Addr)); listen(Sock, SOMAXCONN); 3.3 Прийняття підключеннь. Len:= SizeOf(ClientAddr); ClientSock:= WinSock.accept(Sock, @CLientAddr, @Len); Writeln('Client connect from '+IntToStr(htons(ClientAddr.sin_port))); S:= ''; 3.4 Прийняття данних. recv(ClientSock, S, SizeOf(S), 0); Writeln('Receive message from '+IntToStr(htons(ClientAddr.sin_port))+': ' + S); 3.5 Обробка пакету. case s[0] of chr(1): AcceptPRQ; chr(2): AcceptWRQ;
3.6 Формування відповіді. StrCopy(@FileName[0], @S[2]); Len:= Length(FileName); StrCopy(@Mode[0], @S[2 + Length(FileName)]); f:= FileOpen(Filename, FileRead); sz:= SizeOfFile(f); TransmitFile(Sock, f, sz, sz, Nil, nil, 0); CloseFile(f); 3.7 Отримання підтвердження. 3.8 Перейти на 4.3. Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |