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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.07.2009, 20:21   #1
SlashMan
Пользователь
 
Регистрация: 14.07.2009
Сообщений: 30
По умолчанию Виснет машина при передаче файла через сокет

Есть два проекта: Клиент и сервер, сервер отправляет клиенту файл с помощью компонентов TClientSocket,TServerSocket
код сервера, выполняющий отправку:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
   Size: integer;
  P: ^Byte;
begin
   FileName:= Label2.Caption;
   MS := TMemoryStream.Create;
   MS.LoadFromFile(FileName);
   ServerSocket1.Socket.Connections[0].SendText('file#'+FileName+'#'+IntToStr(MS.Size)+'#');
   MS.Position := 0;
   P := MS.Memory;
   Size := ServerSocket1.Socket.Connections[0].SendBuf(P^, MS.Size);
end;
код клиента, принимающий файл:
Код:
procedure TForm1.Writing(Text: String);
begin
if MS.Size < Size then
MS.Write(Text[1], Length(Text));
ProgressBar1.Position := MS.Size*100 div Size;
if MS.Size = Size then
begin
Receive := False;
MS.Position := 0;
MS.SaveToFile('Name');
ClientSocket1.Socket.SendText('end');
MS.Free;
end; 
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Rtext:=ClientSocket1.Socket.ReceiveText;
  if Copy(Rtext, 0, Pos('#', Rtext) -1) = 'file' then
    begin
      MS := TMemoryStream.Create;
      Delete(Rtext, 1, Pos('#', Rtext));
      Name := Copy(Rtext, 0, Pos('#', Rtext) -1);
      Delete(Rtext, 1, Pos('#', Rtext));
      Size := StrToInt(Copy(Rtext, 0, Pos('#', Rtext) -1));
      Delete(Rtext, 1, Pos('#', Rtext));
      Label1.Caption:=inttostr(Size);
      Label2.Caption:=Name;
      Receive := True;
      Writing(RText);
    end;
end;
Во время передачи, комп не реагирует на нажатия.. зависает полностью.
В чем может быть проблемма, и как сделать так, чтобы функциональность компьютера сохранялась во время передачи файла?

Заранее спасибо за содействие.
SlashMan вне форума Ответить с цитированием
Старый 15.07.2009, 23:41   #2
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

SlashMan , а Вы не пробовали посмотреть вот это тему http://programmersforum.ru/showthrea...t=57445&page=1
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 19.07.2009, 23:50   #3
SlashMan
Пользователь
 
Регистрация: 14.07.2009
Сообщений: 30
По умолчанию

спасибо, помогло
SlashMan вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Данные через сокет по tcp/ip протоколу a.haener JavaScript, Ajax 1 04.07.2009 08:14
Не работает отправка файла через сокет SARGE Работа с сетью в Delphi 0 29.01.2009 13:29
Передача файла через сокет Delphi Unconnected Работа с сетью в Delphi 4 23.12.2008 16:16
отделение строк при передаче в serversocket... prizrak1390 Общие вопросы Delphi 14 29.06.2008 21:13
как узнать о завершенной передаче файла One.Love Работа с сетью в Delphi 0 29.03.2008 21:37