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

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

Sockets [D6, WinXP]


Страницы:   1 2

dkDimon ©   (2002-11-04 14:48:00) 

МОжет кто-нибудь привести примерчик передачи и принятия буфера в TClientSocket & TServerSocket (SendBuf, ReceiveBuf) записей (record). Ну или скажите что я делаю неправильно:

Клиент:

type
TSendInfo = packed record
Cmd: String;
Data: Pointer;
end;

...

procedure Send;
var
si: TSendInfo;
begin
si.Cmd := "Command";
si.Data := ... (чему-нибудь);
ClientSocket.Socket.SendBuf(si, SizeOf(si));
end;


Сервер:

type
TSendInfo = packed record
Cmd: String;
Data: Pointer;
end;

...

procedure Receive;
var
si: TSendInfo;
begin
ServerSocket.Socket.ReceiveBuf(si, ServerSocket.Socket.ReceiveLenth);
end;

ОШИБКА!!! Access violation...

Плиз, помогите кто чем может...


Моджахед   (2002-11-05 20:50:00) [21]

Тут тебе намекают вот чего.
Ты чего это, редиска, по сетке пойнтеры шлешь, а? Ты бы еще адрес бабушки послал....
Указатель этот твой куда указывает? На твою ведь область памяти, так твою... Или ты думал указатель передашь, а все остальное из твоей оперативки на другую машину автоматом переместится. Вот и думай, откудыть ростуть руки, короче типа.


Digitman   (2002-11-04 14:54:00) [22]


> TSendInfo = packed record
> Cmd: String;
> Data: Pointer;
> end;


Проверь, чему равен SizeOf(si) в случае
si.Cmd := "Command"
и в случае
si.Cmd := "Another Command"

это заставит тебя призадуматься


Страницы:   1 2

Наверх

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