Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

SendBuf vs ALL [D5, WinME]


Страницы:   1 2

Gamer ©   (2005-06-03 07:35:00) 

Доброго времени суток, мастера.
Помогите. Делаю программу администрирования сети. Суть такова что на одном компе стоит сервер, на остальном клиенты. Когда клиент подключается к серверу он (клиент) посылает информацию о себе:
cs.socket.SendBuf(info,sizeof(info));
Сервер её получает:
Socket.ReceiveBuf (info, sizeof (info));
И у меня выходит, что С. может получать только инфу о К. и более ничего (например: скриншот, список задач...). Вопрос: как мне предупредить С. о том что в даный момент я ему буду отправлять?


SammIk   (2005-06-04 14:46:00) [21]


> Digitman ©   (03.06.05 15:32) [8]

Гы, с низу)


Gamer   (2005-06-03 19:03:00) [22]

Спасибо, работает. Но не будет ли такой проблемы, что в один момент несколько клиентов отправлят эти префиксы и программа что-то сделает не так?


Digitman   (2005-06-03 15:32:00) [23]


> SammIk ©   (03.06.05 15:24) [7]


те же фаберже, только вид сбоку)


SammIk   (2005-06-03 15:24:00) [24]

Блин когда я дела, был у меня тако стаб
DaTa_ struct
Command:DWORD;Команда, тобишь номер команды. Старшии бит еще и флагом был
Param1:DWORD;Параметры, могли быть смещением от начала этои с труктуры( например для строк)
Param2:DWORD;
Param3:DWORD;
Param4:DWORD;
len:DWORD;Длинна данных не учитывая этот стаб.
ends
Сервер(клиент) получал данные(причем получал руководствуясь полем len).
И выполнял команду(Command).
Причем в зависимости от номера комманды, поля paramX воспринемались по разному.


Digitman   (2005-06-03 13:19:00) [25]

точно так же как ты и все остальное намерен был посылать

var
 Prefix: Byte;

cs.socket.SendBuf(Prefix,sizeof(Prefix));

Socket.ReceiveBuf(Prefix, sizeof (Prefix));


Gamer   (2005-06-03 12:22:00) [26]

[4] Digitman ©   (03.06.05 12:13)
Не могли бы Вы подробнее написать, как посылать этот префикс?


Digitman   (2005-06-03 12:13:00) [27]


> Gamer   (03.06.05 12:04) [3]


посылай сначала префикс, определяющий какую конкретно структуру ты намерен послать, а следом - саму эту структуру

в твоем простейшем случае префикс м.б. байтом со значениеми, например, равными

1 - следом посылаю структуру TInfo
2 - следом посылаю структуру TCommand

принимающая сторона принимает от тебя сначала байт префикса, анализирует его значение и в зависимости от этого значения ветвит дальнейший свой алгоритм :

1 - следом ожидаю и принимаю структуру TInfo
2 - следом ожидаю и принимаю структуру TCommand

это и есть элемент протокола инф.обмена между сервером и клиентом


Gamer   (2005-06-03 12:04:00) [28]

[1] Digitman ©   (03.06.05 08:28)
Да но у меня инфа:  
TInfo = record
 CpuSpeed,Hdd,Video,Os,ComputerName:string;
end;
а команды, например:
TCommand = record
 Command,Param1,Param2,Param3:string;
end;

и мне надо определить, что пришло.
Или мне все передавать в виде TCommand?

[2] Slym ©   (03.06.05 11:41)
Это как?


Slym   (2005-06-03 11:41:00) [29]

Протокол передачи придумывай...


Digitman   (2005-06-03 08:28:00) [30]


> как мне предупредить С. о том что в даный момент я ему буду
> отправлять?


точно так же как ты сообщил Серверу информацию о Клиенте


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо