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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.08.2008, 01:26   #1
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию Вопрос TClientSoket

Можно ли чтобы на сервере был файл 1.txt и программа считывала его содержимое?
Crivel вне форума Ответить с цитированием
Старый 04.08.2008, 01:48   #2
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Конечно можно, вот код:

Код:
//Сервер
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ScktComp;

type
  TForm1 = class(TForm)
    ServerSocket1: TServerSocket;
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
  private
    { Private declarations }
  public
    { Public declarations }
    fs: TFileStream;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
  var
  S:string;
  begin
  s:=socket.ReceiveText;
If S='Log' Then
Begin
If FileExists('1.txt') Then
Begin
Fs:=TFileStream.Create('1.txt', FmOpenRead);
Try
Fs.Position:=0;
Socket.SendText('Size:'+IntToStr(Fs.Size)+ #0);
Socket.SendStream(Fs);
Finally
End;
End;
End;
End;
end.
--------------------------------
//Клиент
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  TForm1 = class(TForm)
    ClientSocket1: TClientSocket;
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
  private
    { Private declarations }
    Fs: TMemoryStream;
    Reciving: Boolean;
    DataSize: Integer;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Socket.SendText('Log');
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);   
Var
S, Sl: String;
Data: String;
Begin
S:=Socket.ReceiveText;
If Reciving Then
Begin
Fs.Write(S[1], Length(S));
If Fs.Size=DataSize Then
Begin
Reciving:=False;
Fs.Position:=0;
Try
memo1.Lines.LoadFromStream(fs);
Finally
fs.Free
End;
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:=TMemoryStream.Create;
FS.SaveToStream(FS);
Fs.Write(S[1], Length(S));
End;
End;
end.
Всегда рад помочь!

Последний раз редактировалось Terran; 04.08.2008 в 02:26.
Terran вне форума Ответить с цитированием
Старый 04.08.2008, 02:10   #3
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Щас попробую

Последний раз редактировалось Crivel; 04.08.2008 в 02:14.
Crivel вне форума Ответить с цитированием
Старый 04.08.2008, 02:29   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Всё, привёл код в порядок. Вы уж извините что на скорую руку немного не дописал.
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 04.08.2008, 02:41   #5
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Извините, чайник в этом компоненте. Куда сервер запустить? то есть я создам сервер, скомпилирую, а программу отправлю на сервер?
Crivel вне форума Ответить с цитированием
Старый 04.08.2008, 02:46   #6
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Я думаю что бы много не расписывать, вот исходник, думаю будет понятнее:

сервер.rar
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 04.08.2008, 12:34   #7
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Terran, спасибо за ответ, но я наверно не совсем правильно задал вопрос. Этот файл находится не на другом компьютере, а он находится по такому путю - http//word-exchange.3dn.ru/1.txt
Crivel вне форума Ответить с цитированием
Старый 04.08.2008, 14:21   #8
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Ну пожалуйста помогите, мне это до завтра надо сделать!

Последний раз редактировалось Crivel; 04.08.2008 в 14:46.
Crivel вне форума Ответить с цитированием
Старый 04.08.2008, 16:05   #9
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Цитата:
Этот файл находится не на другом компьютере, а он находится по такому путю - http//word-exchange.3dn.ru/1.txt
Я в этом направлении не работал, так что вы уж извините, но я помочь тут не смогу...
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Старый 04.08.2008, 16:51   #10
Crivel
Delphi\C++
Форумчанин
 
Аватар для Crivel
 
Регистрация: 18.06.2008
Сообщений: 277
По умолчанию

Ну кто нибудь знает?
Crivel вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
Скачать TClientSoket Crivel Компоненты Delphi 1 31.07.2008 13:38
вопрос про IP ЧИЖ Работа с сетью в Delphi 1 23.06.2008 13:53