![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
SendBuf vs ALL [D5, WinME]
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]
> как мне предупредить С. о том что в даный момент я ему буду
> отправлять?
точно так же как ты сообщил Серверу информацию о Клиенте