Главная страница
    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.014 c
6-43714
Lord_KILLMAN
2004-01-08 01:06
2004.03.14
Товарищи!!! Кто может чем-либо помочь (сет. прогр.) , отзовитесь!


1-43663
Nekto
2004-03-01 21:58
2004.03.14
TComboBox


7-43902
MVova
2003-12-23 11:19
2004.03.14
Установка программ в панели управления.


14-43782
Карелин Артем
2004-02-17 17:11
2004.03.14
Как установить длинный пароль на асю?


3-43402
Новичек
2004-02-12 11:08
2004.03.14
TADODataSet проблемы при вставке в master/detail





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