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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.013 c
4-43960
LOX
2004-01-03 16:40
2004.03.14
PWideChar


3-43382
Yermek
2004-01-25 21:58
2004.03.14
Paradox в сети


1-43597
Alex_DM
2004-02-27 09:46
2004.03.14
Исчезающая иконка


3-43357
snake1977
2004-02-16 11:09
2004.03.14
наследник TDataSet или как сделать свой формат BD


3-43350
GogaStar
2004-02-16 13:52
2004.03.14
Как побороть





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