Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: CL | DM;

Вниз

Передача потоков по сети   Найти похожие ветки 

 
Sen   (2004-01-02 15:26) [0]

Нужно написать программу для передачи изображения по сети. Картинку перегнать в поток элементарно, а как отправить по сети не знаю. Люди добрые, помогите!!!


 
Rouse_   (2004-01-02 16:18) [1]

SendBuf


 
Rouse_   (2004-01-02 16:20) [2]

Вот примерно так:

procedure TFWUDPSocket.Send(const Host: String; Port: Integer;
Data: TMemoryStream);
var
Buffer: array of Char;
Result: Integer;
begin

try

if not Initialize(FClient, Host, Port) then Exit;

SetLength(Buffer, Data.Size);
Data.Position := 0;
Data.ReadBuffer(Buffer[0], Data.Size);

Result := SendTo(FClient, Buffer[0], Data.Size, 0, FSockAddr, SizeOf(FSockAddr));

if Result = SOCKET_ERROR then
Error(ERR_SEND + WSAErrorToString(WSAGetLastError));

finally

SetLength(Buffer, 0);
DeInitialize;

if WSAGetLastError <> 0 then Error(WSAErrorToString(WSAGetLastError));

end;

end;


Желаю успехов


 
Sen   (2004-01-03 13:16) [3]

Спасибо, но хотелось бы что нибудь для TClientSocket и TServerSocket.
У меня получилось вот что:
Data := TMemoryStream.Create;
...
procedure TForm1.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
var s: string;
begin
s := Socket.ReceiveText;
Data.Write(s,Socket.ReceiveLength);
if Data.Size = DataSize then
begin
Data.Position := 0;
ScreenShot.Picture.Bitmap.LoadFromStream(Data);
Data.Free;
end;
end;

procedure TForm1.Send(Stm: TMemoryStream);
begin
ClientSocket.SendBuf(Stm,Stm.Size);
end;


В чём ошибка?


 
Polevi   (2004-01-03 13:40) [4]

где анализ результата вызова SendBuf


 
Pat   (2004-01-03 15:36) [5]

Data.Write(s [1],Socket.ReceiveLength);


 
Pat   (2004-01-03 15:39) [6]

Data := TMemoryStream.Create;
Запихни в procedure TForm1.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
а то Data.Free; и при последующем чтении AV

Ну и try finally не помешает...


 
Sen   (2004-01-03 17:23) [7]

Я просмотрел текст который получаю в качестве потока и увидел там только цифру "9". При этом данные о длине потока передаются нормально. Так-же я испрбовал SendBuf, SendStream,ReceiveBuf,ReceiveText во всех комбинациях: не помогает.


 
Pat   (2004-01-03 18:09) [8]

Попробуй отправить какой-нибудь файл, получить его и сохранить в другой файл. Затем сравни. И как насчет Data.Write(s[1],Socket.ReceiveLength); ?


 
Sen   (2004-01-03 18:23) [9]

Data.Write(s[1],Socket.ReceiveLength); - я пробовал, не помогло.


 
Sen   (2004-01-05 07:57) [10]

Ну посоветуйте хоть что-нибудь


 
Polevi   (2004-01-05 09:28) [11]

Data.Write(PChar(s)^,Length(s));
и [4]



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

Текущий архив: 2004.03.14;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.012 c
4-43940
prabbit
2004-01-07 21:28
2004.03.14
Не выходит передать нажатие клавиш...


14-43790
arbin
2004-02-18 15:21
2004.03.14
Веселые вещи происходят у нас.


1-43651
Vilux
2004-02-25 15:38
2004.03.14
Передача данных в dll


1-43452
Marina_S
2004-02-28 15:20
2004.03.14
как определить в каком модуле и в каком месте циклит программа


3-43404
Vist
2004-02-13 12:02
2004.03.14
Индексация через BDE





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