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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2010, 15:53   #1
хомякec
Пользователь
 
Регистрация: 21.04.2010
Сообщений: 13
По умолчанию Расшифровать код (передача ФАЛОВ через сокеты)

//СЕРВЕР
/-----
пропущу начало, пишу то что пытаюсь подробнее разобрать:

Procedure TForm1.ServerSocket1ClientRead(Send er: TObject;
Socket: TCustomWinSocket);
Var
fs: TFileStream;
Data: TMemoryStream;

Begin
if Socket.ReceiveText = 's' then
Begin
fs:=TFileStream.Create(Edit1.Text, fmOpenRead); {OtKpbIT DJIa 4TeHu9}
{По ссылке из ЕДИТ1 в потоковую переменную зап открытый файл}
Try
fs.Position:= 0; {koJIu4ectBo c4uTaHHbIx 6auToB oT Ha4aJIa IIotoka}
// начинаем с 0
Socket.SendText('Size:'+IntToStr(fs .Size)+ #0);
Socket.SendStream(fs);
Finally
End;
End;
End;
End.

собственно клиент:

{ Private declarations }
fs: TFileStream;
Reciving:Boolean;
DataSize: integer;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

Procedure TForm1.Button1Click(Sender: TObject); //понятно)) подключится
Begin
ClientSocket1.Address:=Edit1.Text;
ClientSocket1.Active:=True;
End;

Procedure TForm1.Button2Click(Sender: TObject); // отключиться
Begin
ClientSocket1.Active:=False;
End;

Procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
Begin
Socket.SendText('s');
End;
Procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
Var
s, sl: String;
Begin
s:= Socket.ReceiveText;
if Reciving then
Begin
fs.Write(s[1],length(s));
if fs.Size=DataSize then
Begin
fs.Free;
Reciving:=False;
Application.MessageBox('Ïîçäðàâëÿþ, Ôàèë ïðèíÿò', 'Âíèìàíèå!!!');
End;
Exit;
End;
if copy(s, 1, 5)='Size:' then
Begin
sl:=copy(s, 6, Pos(#0, s)-6);
DataSize:=StrToInt(sl);
Delete(s, 1, Pos(#0, s));
Reciving:=True;
fs:=TFileStream.Create('output.doc' ,fmCreate);
fs.Write(s[1], length(s));
End;
End;
procedure TForm1.Edit1Change(Sender: TObject);
begin

end;

End.
хомякec вне форума Ответить с цитированием
Старый 18.05.2010, 15:54   #2
хомякec
Пользователь
 
Регистрация: 21.04.2010
Сообщений: 13
По умолчанию

Если не очень сложно, хотелось бы коменты под каждой строкой
хомякec вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
передачи файлов через сокеты CHITER Работа с сетью в Delphi 5 09.07.2010 21:55
расшифровать в ASCII потом цифры расшифровать в бинарный код viorel Общие вопросы Delphi 1 07.05.2010 14:43
расшифровать начальный код API ассемблер123 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 5 28.04.2010 21:02
qip - передача фалов... Altera Софт 9 30.12.2008 18:23