Форум: "Сети";
Текущий архив: 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.012 c