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

Вниз

Как с помощью TClient(Server)Socket переслать файл ??   Найти похожие ветки 

 
Gerda   (2003-01-21 17:46) [0]

Дарова Мастера.
Вопрос такой - как с помощью TClient(Server)Socket переслать файл ??
Заранне благодарен.


 
Polevi   (2003-01-21 17:51) [1]

send, recv


 
Gerda   (2003-01-21 18:59) [2]

Да вот тока покапался в архиве, нашел чтото,но чета оно не пашет, и отсылает тока по 8 кил ?!?
//------------------Это принимающая часть-------------------
var buf:Pchar;
f:TFileStream;
len:integer;
begin
if SaveDialog.Execute then filename:=SaveDialog.FileName;
len:=Socket.ReceiveLength;
GetMem(buf, len+1);
Socket.ReceiveBuf(buf^, len);
f:=TFileStream.Create(filename, fmCreate);
f.Seek(0, soFromEnd);
f.WriteBuffer(buf^,len);
f.Free;
end;
//------------------Это отправитель-------------------
f:=TFileStream.Create(temp, fmOpenRead);
servSock.Socket.Connections[0].SendStream(f);
f.Free;
//----------------------------------------------------

Че не так ??


 
???   (2003-01-21 19:37) [3]

Размер буфера мал
Socket.ReceiveBuf(buf^, len);


 
Gerda   (2003-01-21 20:02) [4]

Так ведь len:=Socket.ReceiveLength (если я не ошибаюсь скока накачал), исходя из этого я и беру размер буфера. Передается чета по 8 кил, и до тех пор пока все не передастса, мож ServerType поставить другим ?? (у мя stNonBlocking стоит)


 
???   (2003-01-21 20:09) [5]

Скорее всего по 8192 байта , наверно файлюк большой и его размер в байтах больше чем размерность Integer;


 
Gerda   (2003-01-21 20:16) [6]

Но тип интеджер более вместительный, даже если так, то как мне переслать файло ну например метров на 10 ??


 
???   (2003-01-21 20:29) [7]

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



 
mrcat   (2003-01-22 00:25) [8]

Gerda © (21.01.03 18:59)
...
и отсылает тока по 8 кил ?!?
...


А сколько надо??!!

Вы понимаете вообще, как передача данных организуется?


 
sndanil   (2003-01-22 11:30) [9]

Можно попробовать использовать API и воспользоваться функцией
BOOL TransmitFile(
SOCKET hSocket,
HANDLE hFile,
DWORD nNumberOfBytesToWrite,
DWORD nNumberOfBytesPerSend,
LPOVERLAPPED lpOverlapped,
LPTRANSMIT_FILE_BUFFERS lpTransmitBuffers,
DWORD dwFlags
);
насколько понимаю она предназначена для более быстрой передачи файла за счет передачи его в режиме ядра ...


 
Verg   (2003-01-22 11:48) [10]


> f:=TFileStream.Create(temp, fmOpenRead);
> servSock.Socket.Connections[0].SendStream(f);
> f.Free;


Help по SendStream читать не пробовали?

Note: The Stream passed as a parameter to SendStream becomes “owned” by the windows socket object. The Windows socket object frees the stream when it is finished with it. Do not attempt to free the stream after it has been passed as a parameter.


 
Gerda   (2003-01-23 21:01) [11]

Спасибо всем, разобрался, зафтыкал я mrcat, с кем не бывает, все сделал с помощью цикла.



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

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

Наверх





Память: 0.46 MB
Время: 0.006 c
14-39540
NewUser
2003-02-26 13:54
2003.03.13
А как из Delphi с Excel документами лучше работать?


6-39460
alexe
2003-01-22 10:17
2003.03.13
Поскажите плз как написать telnet сервер на основе TIdTelnetServe


3-39182
mfender
2003-02-20 16:16
2003.03.13
MS Access + Delphi


1-39277
Леша
2003-03-03 13:34
2003.03.13
Как создавать объекты как в WORDе или CORELе?


14-39501
gsu
2003-02-25 11:36
2003.03.13
ListHandle ComboBox а ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский