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

Вниз

Попытка написать rAdmin. Вопросы по Indy   Найти похожие ветки 

 
KOLYA-rzn   (2006-09-01 21:16) [0]

Очередная моя попытка написать программу. И сразу несколько вопросов по Indy IdTCP..:
1) Можно ли принимать через readbuffer различные типы?? Если да, то как.(*поясняю я буду посылать различные запросы, иногда файлы, иногда картинки , используя один сервер.Как лучше это реализовать)
2)Говорят, что посылать картинку лучше 1-ую в bmp , а вторую - как bmp2 xor bmp1 . Но примера этому не нашел. Как это реализовать??
3)Как можно сделать закачку с отображением процесса? Я хочу сделать файловый менеджер.

Вот и всё хотел я сделать через один сервер. Возможно ли это?


 
Ketmar ©   (2006-09-01 21:20) [1]

возможно. но тебе -- ещё рановато на такое замахиваться. сделай сначала по-отдельности.


 
Dmitrij_K   (2006-09-01 21:53) [2]

1) сперва посылаешь тип передаваемых данных 1 байт byte, каждый тип имеет свою константу, далее размер данных 4 байта Integer, а потом сами данные, в таком порядке принимаешь
2) не знаю
3) см 1. так сможешь организовать прогресбар итд
давно пытался написать смотри http://slil.ru/23080069


 
KOLYA-rzn   (2006-09-01 22:33) [3]

2Ketmar ©
возможно но отдельно писать не имеет смысла т.к. я представляю себе этот код
2Dmitrij_K
Спасибо ! Но в этом примере используются Соккеты... Тогда возникает вопрос а целесообразно ли переходить на indy??? Напиши мал. пример клиент/сервер О распозн типов напр. Type1-Type2. я на примере лучше понимаю.
+
4)Могу ли записать в тип Type1= record массив байтов?


 
dwar ©   (2006-09-02 09:32) [4]

1.Можно буффер принимает данные типа byte,так что ему в принципе все равно что это за тип, надо просто разработать протокол обмена данными чтоб однозначно определять тип и размер.
3. Зная из протокола обмена размер можно сделать без особых усилий


 
KOLYA-rzn   (2006-09-02 12:19) [5]

2dwar
1.в этом то и проблема в безошибочном определении типа...
3.не представляю себе: файл сам по себе передается через filestream и узнать его размер(полученный) будет проблематично.


 
Virgo_Style ©   (2006-09-02 16:28) [6]

2. Если посылать как bmp, то без разницы


 
Ketmar ©   (2006-09-02 16:48) [7]

> [5] KOLYA-rzn   (02.09.06 12:19)
учить матчасть. читать справку.


 
KOLYA-rzn   (2006-09-02 17:29) [8]

>Virgo_Style ©   (02.09.06 16:28) [6]
естественно в jpeg


 
Cyrax ©   (2006-09-02 22:17) [9]

KOLYA-rzn   (01.09.06 22:33) [3]
> Тогда возникает вопрос а целесообразно ли переходить на indy???

Переходить на Indy с чего?  Indy тоже работает через winsock...

KOLYA-rzn   (02.09.06 12:19) [5]
> в этом то и проблема в безошибочном определении типа...

Наверху писали:
сперва посылаешь тип передаваемых данных 1 байт byte, каждый тип имеет свою константу, далее размер данных 4 байта Integer, а потом сами данные, в таком порядке принимаешь

KOLYA-rzn   (02.09.06 12:19) [5]
> не представляю себе: файл сам по себе передается через filestream и узнать его размер(полученный) будет проблематично

Через какой filestream (рассматриваем Indy?)...
И в чём заключается проблема?..


 
KOLYA-rzn   (2006-09-02 22:55) [10]

Мне кажется я что-то не понимаю, но в нете не могу найти по этому поводу инфы.


 
Cyrax ©   (2006-09-02 23:46) [11]

KOLYA-rzn   (02.09.06 22:55) [10]
> в нете не могу найти по этому поводу инфы

По поводу того, как передавать данные по сети через TCP/IP?
Или конкретно по Indy?

И вообще, ты работал с TCP/IP?  Если да, то какие средства использовал: напрямую с winsock, netapi или компоненты вроде Indy?


 
Eraser ©   (2006-09-03 00:48) [12]

> [2] Dmitrij_K   (01.09.06 21:53)


> сперва посылаешь тип передаваемых данных 1 байт byte, каждый
> тип имеет свою константу

эт ещё что за ерунда, какой тип данных отсылать или принимать решает протокол в общем случае.


 
Cyrax ©   (2006-09-03 08:36) [13]

Eraser ©   (03.09.06 00:48) [12]
эт ещё что за ерунда, какой тип данных отсылать или принимать решает протокол в общем случае.

Ну и какие типы данных передаёт протокол TCP ???
Отень интелесно...


 
Eraser ©   (2006-09-03 13:38) [14]

> [13] Cyrax ©   (03.09.06 08:36)

при чем тут TCP?

сейчас речь о прикладном протоколе, который тебе прийдется изобретать.


 
Cyrax ©   (2006-09-03 15:08) [15]

Eraser ©   (03.09.06 13:38) [14]
...сперва посылаешь тип передаваемых данных 1 байт byte, каждый
тип имеет свою константу...
> эт ещё что за ерунда
> сейчас речь о прикладном протоколе, который тебе прийдется изобретать


Чем тебе не простейший прикладной протокол ?
И типы, и размер данных определяет...


 
Eraser ©   (2006-09-03 15:36) [16]

> [15] Cyrax ©   (03.09.06 15:08)

к чему только этот протокол прикладывать? или ты проектируешь систему передачи типов?, тогда да, все правильно :)


 
Cyrax ©   (2006-09-03 16:22) [17]

Eraser ©   (03.09.06 15:36) [16]

Думаю, для простой системы передачи разнородных данных этого достаточно.
Но для полноценного RAdmin"а, конечно, нужен полноценный прикладной протокол...


 
KOLYA-rzn   (2006-09-03 22:53) [18]

Вот моё решение :
1)
Byte1:=2;
SendBuf(Byte1,SizeOf(Byte));
Server:
RecieveBuf(Byte1,SizeOf(Byte));
case Byte1 of
1:s:=RecieveText....;
2:s:=RecieveBuf(TFileStream,Socket.RecieveLenght)
....
Так правильно?
2) Напишите пример передачи данных с прогресс баром.
может быть:
Byte1:=2;
//of Byte1:=3 if not start of file
SendBuf(Byte1,SizeOf(Byte));
SentBuf(ArrayOfBytes,SizeOf(ArrayOfBytes));
"клиент аналог ^^


 
Ketmar ©   (2006-09-03 23:10) [19]

> Напишите пример передачи данных с прогресс баром.
можут, сразу весь код?


 
Cyrax ©   (2006-09-03 23:38) [20]

KOLYA-rzn   (03.09.06 22:53) [18]

Так всё-таки остановился на Indy?


 
dwar ©   (2006-09-04 04:54) [21]


> Но для полноценного RAdmin"а, конечно, нужен полноценный
> прикладной протокол...

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


 
Cyrax ©   (2006-09-04 10:08) [22]

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

В явном виде - это как ?


 
dwar ©   (2006-09-04 11:24) [23]

Например:
размер заложить на 4 байта
затем 4 байта для типа


 
Cyrax ©   (2006-09-04 11:30) [24]

А для типа хватит и одного...


 
dwar ©   (2006-09-04 11:31) [25]

можно и один


 
KOLYA-rzn   (2006-09-04 13:11) [26]

Я остановился на Sockets так проще. Немного освоив TCP перейду на Indy.
Так правильно?Вы это имели в виду???


 
Сергей М. ©   (2006-09-04 15:02) [27]


> KOLYA-rzn   (04.09.06 13:11) [26]
>
> Я остановился на Sockets так проще. Немного освоив TCP перейду
> на Indy.
> Так правильно?


Сие есть самое разумное решение, если под "Sockets" подразумеваются TServer/ClientSocket или TTCPServer/Client


 
KOLYA-rzn   (2006-09-04 17:28) [28]

>\Сергей М. ©   (04.09.06 15:02) [27]
>Сие есть самое разумное решение, если под "Sockets" подразумеваются
>TServer/ClientSocket или TTCPServer/Client
Да так они и есть именно они


 
Cyrax ©   (2006-09-04 22:22) [29]

> Немного освоив TCP перейду
> на Indy.
И перепишешь весь код RAdmin"а ?
А если честно, то лучше всего освоишь сокеты и TCP/IP, поработав с winsock (мой первый опыт работы с сетью пришёл с winsock на Visual C++)... Но это ГОРАЗДО сложнее...
В то же время в Indy ничего нового о сокетах и протоколе не узнаешь из-за высокого уровня абстракции. Там все детали организации передачи данных скрыты от разработчика...
Что насчёт компонентов [ClientSocket, ServerSocket] и [TcpClient, TcpServer], то ни с теми, ни с другими я не работал... Поэтому не берусь за их сравнение с Indy. Но знаю, что TcpClient, TcpServer устарели... - замена им ClientSocket, ServerSocket...

И вообще, вначале лучше почитать доки по сокетам, TCP/IP и потокам и уже имея общее представление, начинать кодить...


 
Eraser ©   (2006-09-04 22:36) [30]

а я бы посоветовал использовать клинет-серверные компоненты от Indy, т.к. в данном случае протокол обмена данными будет весьма сложный, поэтому блокирующий режим здесь предпочтительнее, хотя ClientSocket и ServerSocket его поддерживают тоже..


 
Cyrax ©   (2006-09-04 22:41) [31]

Честно говоря, я тоже склоняюсь к Indy...
... может, из-за того что с другими компонентами не работал, а может и нет...


 
dwar ©   (2006-09-05 05:33) [32]

Indy достаточно неплохой компонент для работы и достаточно большое количество примеров существует по работе с ним, и на мой взгляд с ним будет попроще


 
Cyrax ©   (2006-09-05 08:46) [33]

Тьфу, перепутал в [29] - наоборот, ClientSocket, ServerSocket устарели - замена им TcpClient, TcpServer.


 
KOLYA-rzn   (2006-09-05 13:06) [34]

я сейчас пишу для интереса. И я всё таки решил перейти на C# и дотнет.


 
Cyrax ©   (2006-09-05 13:08) [35]

я сейчас пишу для интереса. И я всё таки решил перейти на C# и дотнет.

Ух ты...
А почему ?


 
KOLYA-rzn   (2006-09-05 14:48) [36]

работать придётся на нем седня принесу C# на 4 dvd дисках и MSDN на 2dvd


 
Eraser ©   (2006-09-05 17:35) [37]

> [34] KOLYA-rzn   (05.09.06 13:06)

к слову, есть версия Indy, совместимая с .NET.


 
Cyrax ©   (2006-09-05 19:13) [38]

принесу C# на 4 dvd дисках и MSDN на 2dvd

Итого 6 DVD ???
У меня Visual Studio 2005 c MSDN весит чуть меньше 4 Гб т.е. 1 DVD...

Eraser ©   (05.09.06 17:35) [37]
к слову, есть версия Indy, совместимая с .NET.

Интересно...


 
Eraser ©   (2006-09-05 19:23) [39]

> [36] KOLYA-rzn   (05.09.06 14:48)
> работать придётся на нем седня принесу C# на 4 dvd дисках
> и MSDN на 2dvd

ерунда какая-то.


 
Cyrax ©   (2006-09-05 23:02) [40]

C# на 4 dvd дисках и MSDN на 2dvd

Может это CD?



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

Текущий архив: 2007.02.11;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.045 c
2-1169633090
iviom
2007-01-24 13:04
2007.02.11
Как на кнопку иконку поместить?


2-1169749750
electroman239
2007-01-25 21:29
2007.02.11
Цвет РГБ в Интегер


3-1164112584
pavel_guzhanov
2006-11-21 15:36
2007.02.11
Как соединить DBGrid с IBQuery?


4-1158081492
vidiv
2006-09-12 21:18
2007.02.11
Копирование выделенного текста с Активного окна.


15-1169539069
vitv
2007-01-23 10:57
2007.02.11
Кто-нибудь читал книги Дж. Фостер?