Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2012, 02:06   #1
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию TServerSocket - принятые данные

Имеется такой код:

FORM1:
Код:
procedure TForm2.ServerSocket1GetThread(Sender: TObject;
  ClientSocket: TServerClientWinSocket; var SocketThread: TServerClientThread);
begin 
 SocketThread := TMyServerThread.Create( FALSE, ClientSocket );
end;
TMyServerThread:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ZAbstractRODataset, ZAbstractDataset, ZDataset, ZConnection,
  ScktComp, StdCtrls, ExtCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP;

type
  TMyServerThread = class(TServerClientThread)
  private
    { Private declarations }
  protected
    procedure Execute; override;
  end;
var
text:string;
implementation
uses Unit2;

{ TMyServerThread }

procedure TMyServerThread.Execute;
var
MySocket: TWinSocketStream;
dest: TFileStream;
begin
  // открываем файл, в который будем записывать полученные данные
  dest := TFileStream.Create('D:\received.dat',fmOpenWrite or fmCreate);
  // создаем поток для работы с сокетом
  // и задаем таймаут 20 сек.
  MySocket := TWinSocketStream.Create(ClientSocket, 20000);
  // блок защиты от сбоев try..finally
  try
  // пока соединение не прервано
  while (not Terminated) and ClientSocket.Connected do begin
  // ждем данных из сокета
  if MySocket.WaitForData(2000) then begin
  // если из потока MySocket (сокет) в поток dest (файл)
  // скопировано 0 байт, то выходим из цикла while
  if dest.CopyFrom(MySocket,1024) = 0 then
  break;
  end;
  end;
  finally
  // закрываем поток сокета
  MySocket.Free;
  // закрываем сокет-соединение
  ClientSocket.Close;
  // закрываем файл
  dest.Free;
  end;
end;

end.
Вылетает ошибка: Stream read error. Как исправить?

Последний раз редактировалось fezilk25; 03.06.2012 в 02:16.
fezilk25 вне форума Ответить с цитированием
Старый 03.06.2012, 04:57   #2
fezilk25
Форумчанин
 
Регистрация: 01.08.2010
Сообщений: 124
По умолчанию

ап! помогите, пожалуйста! срочно нужно сделать.
видел статью, в которой советуют использовать буфер - но как, не знаю..
fezilk25 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многопоточность у TServerSocket Dexes Работа с сетью в Delphi 0 03.05.2012 16:01
вопрос по TserverSocket aesoem Работа с сетью в Delphi 5 10.08.2011 23:29
TServerSocket и TClientSocket grafgrial Общие вопросы Delphi 3 25.08.2010 15:15
TServerSocket, TClientSocket prod87 Работа с сетью в Delphi 7 26.10.2009 22:38
TServerSocket goblinyara Работа с сетью в Delphi 4 24.01.2009 10:10