Главная страница
    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
14-43889
olookin
2004-02-20 18:31
2004.03.14
А как?


1-43672
Тимур Айратович
2004-03-01 19:06
2004.03.14
Генератор .dbf из текстового файла


6-43746
E1
2004-01-09 02:38
2004.03.14
Отвлеченная: Проблема работы ICQ через маскарадинг NATD


3-43289
Layner
2004-02-10 08:13
2004.03.14
Можно ли посмотреть на код приложения, позв. сохранять картинку в


14-43763
ИМХО
2004-02-19 01:14
2004.03.14
Новый агент 007





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