Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

Сокеты   Найти похожие ветки 

 
Александр_К   (2007-08-20 09:17) [0]

Можно ли через сокет клиента передать указатель на
структуру к сокету серверу,чтобы этот указатель остался актуальным и не была потеря данных.


 
Elen ©   (2007-08-20 09:42) [1]

Указатель передать плевое дело, а данные по нему ты как читать собрался?


 
Александр_К   (2007-08-20 10:06) [2]

просто имеются переменные данные (строки или файлы). Чтобы в сервере
создавать динамические массивы нужно сразу знать сколько придет и сами данные.
Пока это сделать не получается.
А через структуру, например:
 type
 send = record
   size:Integer;
   action:Byte;
   data:Pointer;<-здесь могли бы висеть данные (указатели на строки или структуры или файлы), но так как они динамические я придумать пока ничего дополнительно не могу.


 
clickmaker ©   (2007-08-20 10:13) [3]


> [2] Александр_К   (20.08.07 10:06)

var s: send;

s.size := размер
s.data := AllocMem(s.size);
Move(данные, s.data^, s.size);
socket.SendBuf(s.data^, s.size);


 
Александр_К   (2007-08-20 10:54) [4]

Что-то не получается:
С клиентской стороны пример:

type
 PSend = ^TSend;
 TSend = Record
   dwData: WORD;
   cbData: WORD;
   lpData: Pointer;
 end;

var
s:TSend;

procedure TForm1.Button1Click(Sender: TObject);
var
  k:Integer;
  ab:Integer;
begin
  ab:=345;
  s.cbData := Sizeof(ab);
  s.dwData:=0;
  s.lpData := AllocMem(s.cbData);
  Move(ab, s.lpData^, s.cbData);
  k:=Client.Socket.SendBuf(s.lpData^, s.cbData);
end;

Я взял ab на примере Integer, но могла быть строка и т.д.
Сервер должен получить ab = 345;

//функция получения данных
procedure ReceiveData(const Socket:Word);
var
  s:TSend;
  kk:Integer;
  ss:Integer;
begin
  kk:=WinSock.recv(Socket,s,s.cbData,0);
  if kk <>0 then
  begin
  ss:=Integer(s.lpData^);
//  Messagebox(0,PChar(inttostr(kk)),PChar(Inttostr(ss)),mb_ok);
  end;
end;

Сервер ПОлучает всякую ерунду,а не k = 345.


 
clickmaker ©   (2007-08-20 11:25) [5]


> kk:=WinSock.recv(Socket,s,s.cbData,0);

s.cbData не указано


 
tio   (2007-08-20 14:07) [6]

а как одним проходом указать cbData?
Мне кажется не в этом дело, даже если будет указан cbData.
Пробовал ничего не получается.


 
clickmaker ©   (2007-08-20 14:12) [7]


> [6] tio   (20.08.07 14:07)

что значит одним проходом?
размер читаемой порции в функции recv - входной параметр, обязан быть


 
Александр_К   (2007-08-20 14:54) [8]

Даже если поставить 2000-
Ничего не получится.
Пробробуйте сами.


 
Германн ©   (2007-08-20 15:13) [9]


> Александр_К   (20.08.07 09:17)
>
> Можно ли через сокет клиента передать указатель на
> структуру к сокету серверу,чтобы этот указатель остался
> актуальным и не была потеря данных.
>

Это что? Продолжение вчерашней бодяги
http://delphimaster.net/view/2-1187526516/ ?



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

Форум: "Начинающим";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.11 c
3-1179317658
Цукор5
2007-05-16 16:14
2007.09.16
insert поля BCD


1-1183640451
Seldoff
2007-07-05 17:00
2007.09.16
CompareStr vs StrComp


11-1170830393
Mabia
2007-02-07 09:39
2007.09.16
Ошибки при установке Service&amp;mckService


2-1187643455
wp2
2007-08-21 00:57
2007.09.16
Как загрузить Rich-тест в компонент TRichEdit на этапе проэктир..


15-1187333215
самовар
2007-08-17 10:46
2007.09.16
Посоветуйте файловый хостинг





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский