Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.04.09;
Скачать: CL | DM;

Вниз

Пакетная передача данных по протоколу 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.006 c
15-1460484629
Dmk
2016-04-12 21:10
2017.04.09
Регистрация Delphi


4-1282656910
Unknown_user
2010-08-24 17:35
2017.04.09
Запрет получения фокуса приложения


15-1460401970
Юрий Зотов
2016-04-11 22:12
2017.04.09
Рисование контура окна


15-1460136529
aka
2016-04-08 20:28
2017.04.09
Лицензионное ПО


2-1439406925
oleg_teacher
2015-08-12 22:15
2017.04.09
Вопрос взаимодействия Delphi и Excel