Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2017.04.09;
Скачать: [xml.tar.bz2];

Вниз

Пакетная передача данных по протоколу UDP   Найти похожие ветки 

 
GAZot ©   (2015-08-12 13:38) [0]

Здравствуйте Уважаемые Мастера Delphi!
Мне предстоит написать программку по пакетной обработке переданных по сети данных (протокол UDP).
В связи с этим у меня к Вам несколько вопросов.
1.В настоящее время в Delphi есть несколько компонентов для решения данной задачи, это
и компоненты с вкладки FastNet до delphi6 и Indy и т.д. Если у кого есть опыт какие лучше использовать?
2. Как правильно записывать принятые пакеты в файл. Во всех просмотренных мною примерах в интернете, либо
передача текстового сообщения, либо файл определённого размера, с пакетами примеров не встречал.
3. Приём и запись осуществлять в одном событии или разных?


 
NoUser ©   (2015-08-12 15:58) [1]

> "по пакетной обработке переданных по сети данных (протокол UDP)"
Пожалуйста, расскажите своими словами, как Вы понимаете вышеприведенную фразу?


 
GAZot ©   (2015-08-12 18:40) [2]

UserDatagramProtocol(UDP) – протокол пользовательских дейтаграмм.
Дейтаграмма – это, своего рода, атомарный передаваемый пакет. Каждая команда посылки данных создаёт одну дейтаграмму. Каждая операция чтения данных из буфера принимающего сокета возвращает одну дейтаграмму.

Под обработкой понимается считывание передаваемых данных в переменные и далее по ним идёт построение графиков так сказать онлайн, но одновременно принимаемые данные должны писаться в файл.


 
NoUser ©   (2015-08-12 20:15) [3]

https://ru.wikipedia.org/wiki/UDP :

...
Таким образом, UDP предоставляет ненадёжный сервис, и датаграммы могут прийти не по порядку, дублироваться или вовсе исчезнуть без следа. UDP подразумевает, что проверка ошибок и исправление либо не нужны, либо должны исполняться в приложении.
...


- Если это Вас не пугает, тогда ответ на вопрос №1 - любой.

Ответ на вопрос №2:
- Как только у Вас в программе будет что-то,  куда Вы сможете ткнуть пальцем и сказать: "вот здесь у меня уже есть байты для файла в количестве эн штук", тогда можно будет попросить функцию Write или BlockWrite записать эти байты на диск в заранее открытый для записи файл.

Ответ на вопрос №3:
- ‘В одном’, но вопрос сформулирован так, что предварительно нужно еще и услышать от Вас, что такое событие?


 
megavoid ©   (2015-08-13 10:06) [4]


procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
 const AData: TIdBytes; ABinding: TIdSocketHandle);
var
 packet: String;
begin
 packet := BytesToString(AData);

 with TStringList.Create do
   try
   Add(packet);
   SaveToFile("log.txt");
 finally
   Free;
 end;
end;


 
GAZot ©   (2015-08-13 12:22) [5]

Спасибо megavoid, а если мне надо писать не текстовый файл, а бинарный, данные приходят именно в этом виде?

А что касаемо вопроса NoUser, то уточняю.

procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
 const AData: TIdBytes; ABinding: TIdSocketHandle);

//принять пакет
//считать данные в переменные
//занести точки на график
//записать данные в файл

Всё выше перечисленное выполнять именно при событии UDPRead


 
GAZot ©   (2015-08-13 12:22) [6]

Спасибо megavoid, а если мне надо писать не текстовый файл, а бинарный, данные приходят именно в этом виде?

А что касаемо вопроса NoUser, то уточняю.

procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread;
 const AData: TIdBytes; ABinding: TIdSocketHandle);

//принять пакет
//считать данные в переменные
//занести точки на график
//записать данные в файл

Всё выше перечисленное выполнять именно при событии UDPRead


 
megavoid ©   (2015-08-13 13:34) [7]

А чем "текстовый" файл отличается от "бинарного"? :)
и тот путь, что я указал, предназначен для демонстрации, а не для реальной работы



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2017.04.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.002 c
4-1282656910
Unknown_user
2010-08-24 17:35
2017.04.09
Запрет получения фокуса приложения


15-1460484629
Dmk
2016-04-12 21:10
2017.04.09
Регистрация Delphi


2-1439274792
olle
2015-08-11 09:33
2017.04.09
создать oleauto


15-1454583291
KSergey
2016-02-04 13:54
2017.04.09
Вопрос про ASM команду sub


15-1458584450
Kilkennycat
2016-03-21 21:20
2017.04.09
Прощай, авиамоделизм.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский