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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 10.10.2009, 18:09   #11
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
Для начала вам лучше всего ознакомиться с примерами
http://indyproject.org/Sockets/Demos/index.EN.aspx

Ссылка по TIdTCPClient/Server и не работает.
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума
Старый 10.10.2009, 21:25   #12
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Вам вполне будет достаточно других примеров (тот, про который вы написали, для начала слабо подходит, ибо аспект работы с SSL достаточно тонок)
TCPCmdServer
http://downloads.atozed.com/indy/10/...ndHandlers.zip
TCPServer
http://downloads.atozed.com/indy/10/...rOnExecute.zip
TCPClient
http://downloads.atozed.com/indy/10/...oTCPClient.zip
TCPClient
AntiFreeze (VCL)
TCPServer
Command Handlers
http://downloads.atozed.com/indy/10/ZipCodeClient.zip
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума
Старый 17.10.2009, 14:30   #13
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
Печаль

Добрый день.
Господа профессионалы может у Вас есть реальный пример приложения клиент сервер. Так как то что мне удалось сделать на примерах работает крайне не стабильно.
И постоянно теряет связь при передачи данных.
А может Вы можете подсказать, что я не так сделал.

С уважением Евгений. Спасибо за помощь.


Клиент

Код:
procedure TForm1.FormShow(Sender: TObject);
begin

LabeledEdit1.Text:='192.168.1.103';
Today := Now;

//подключиться к серверу.
//Form1.btnConnectClick(Sender);

end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  IdTCPClient1.Disconnect;
  CanClose := not IdTCPClient1.Connected;
end;

procedure TForm1.btnConnectClick(Sender: TObject);
begin
  if IdTCPClient1.Connected then begin
      IdTCPClient1.Disconnect;

  end
  else
    begin
      IdTCPClient1.Host := LabeledEdit1.Text;
      IdTCPClient1.Port := StrToIntDef(LabeledEdit2.Text, 8800);
      LabeledEdit2.Text := IntToStr(IdTCPClient1.Port);
      IdTCPClient1.Connect;

    end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  i : integer;
  s : String;
begin
  if not IdTCPClient1.Connected then
    exit;

end;

procedure TForm1.IdTCPClient1Connected(Sender: TObject);
begin
  btnConnect.Caption := 'Disconnect';
  LabeledEdit2.Enabled := false;
  LabeledEdit1.Enabled := false;
end;

procedure TForm1.IdTCPClient1Disconnected(Sender: TObject);
begin
  btnConnect.Caption := 'Connect';
  LabeledEdit2.Enabled := true;
  LabeledEdit1.Enabled := true;
end;


procedure TForm1.ServerSaveFile( NPol:Integer; Command:String; var ErrorFile:String);
Var

   Bytes                                                                        : TBytes;
   SS                                                                           : String; 
begin;

    inc(NKomUser);


    SS:=DateToStr(Today)+'▼'+Reestr_Name+'▼'+IntToStr(NPol)+'▼'+IntToStr(NKomUser)+'▼'+Command;//+'әіәңіавыпва';

    Bytes := TEncoding.UTF8.GetBytes(SS);
    IdTCPClient1.IOHandler.Write(Bytes);

end;
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума
Старый 17.10.2009, 14:43   #14
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
Печаль

Сервер

Код:


type
....
    lbIPs: TCheckListBox;
    cbPorts: TComboBox;


procedure TForm1.PopulateIPAddresses;
var
  i : integer;
begin
  with lbIPs do
    begin
      Clear;
      Items := GStack.LocalAddresses;
      Items.Insert(0, '127.0.0.1');
    end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  if ServerOnline then
    StopServer
  else
    StartServer;
end;

function TForm1.CheckStartOk: Boolean;
var
  i, c : Integer;
begin
  i := 0;
  for c := 0 to lbIPs.Items.Count -1 do
    begin
      if lbIPs.Checked[c] then
        inc(i);
    end;
  result := i > 0;
  if not result then
    begin
      MessageDlg('select  IP ', mtError, [mbOK], 0);
    end;
end;


function TForm1.StartServer: Boolean;
var
  Binding : TIdSocketHandle;
  i : integer;
  SL : TStringList;
begin
  Result := false;
  if not CheckStartOk then
    exit;

  SL := TStringList.Create;

  if not StopServer then
    begin
      Log( 'Error stopping server', clRed );
      Result := false;
      exit;
    end;

  IdTCPServer1.Bindings.Clear; 
  try
    try
      IdTCPServer1.DefaultPort := StrToInt(LabeledEdit1.Text);
      for i := 0 to lbIPs.Items.Count - 1 do
        if lbIPs.Checked[i] then
          begin
            Binding := IdTCPServer1.Bindings.Add;
            Binding.IP := lbIPs.Items.Strings[i];
            Binding.Port := StrToInt( LabeledEdit1.Text );
            Log( 'Server bound to IP ' + Binding.IP + ' on port ' + LabeledEdit1.Text );
          end;

      if InternalServerBeforeStart then
        begin
          IdTCPServer1.Active := true;
          result := IdTCPServer1.Active;

          InternalServerAfterStart;
          if ServerOnline then
            begin
              Log( 'Server started', clGreen );
              BitBtn1.Caption := 'Stop Server';
              SetControls;
            end;
        end;
    except
      on E : Exception do
        begin
          Log( 'Server not started', clRed );
          Log( E.Message, clRed );
          Result := false;
        end;
    end;
  finally
    FreeAndNil( SL );
  end;
end;

procedure TForm1.CheckOptions;
var
  i   : Integer;
  opt : string;
  bDoAutoStart : Boolean;

  function OptName : String;
  begin
    if pos('=', opt) > 0 then
      begin
        result := copy(opt, 1, pos('=', opt) - 1);
        if result[1] in ['-', '/', '\'] then
          result := copy(result, 2, length(result));
      end
    else
      result := opt;
  end;

  function OptValue : String;
  begin
    if pos('=', opt) > 0 then
      result := copy(opt, pos('=', opt) + 1, length(opt))
    else
      result := opt;
  end;
begin
  bDoAutoStart := false;
  for i := 1 to ParamCount do
    begin
      opt := LowerCase(ParamStr(i));

      if OptName = 'port' then
        LabeledEdit1.Text := OptValue;

      if OptName = 'autostart' then
        bDoAutoStart := true;
    end;

  if bDoAutoStart then
    StartServer;
end;

function TForm1.GetServerOnline: Boolean;
begin
  result := IdTCPServer1.Active;
end;

procedure TForm1.SetControls;
begin
  lbIPs.Enabled         := not ServerOnline;
  LabeledEdit1.Enabled        := not ServerOnline;
  cbPorts.Enabled       := not ServerOnline;

end;

function TForm1.InternalServerBeforeStart: Boolean;
begin
  try

    result := true;
  except
    on E:Exception do
      begin
        Log(E.Message, clRed);
        result := false;
      end;
  end;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
PopulateIPAddresses;
StopServer;
end;

procedure TForm1.IdTCPServer1Connect(AContext: TIdContext);
var
  s : String;
begin
  ListBox1.items.AddObject('User connected', pointer(clBlue));
  ListBox1.ItemIndex := ListBox1.Items.Count -1;
end;


procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  ARow                                                                          : Integer;
  SS                                                                            : string;
  Bytes                                                                         : TBytes;
  StreamBuf                                                                     : TIdBytes;
  RezOt:Array of String;

begin
...
    AContext.Connection.IOHandler.ReadBytes(StreamBuf,-1,False);
    SS :=TEncoding.UTF8.GetString(StreamBuf);
...
end;
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума
Старый 17.10.2009, 15:16   #15
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
По умолчанию Ошибка!!!

Ошибка которая выходит на сервере!!!




Должно быть проблема в потоке.
Изображения
Тип файла: bmp 1.bmp (284.9 Кб, 173 просмотров)
Да прибудет с Вами свет и радость!!!

Последний раз редактировалось S_Yevgeniy; 17.10.2009 в 17:48. Причина: Вроде нашел причину.
S_Yevgeniy вне форума
Старый 17.10.2009, 17:52   #16
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
Вопрос

Доброе время суток.
А вот есть возможность передавать файлы?
Т.е. серверу передали команду а в ответ сервер передает файл.
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума
Старый 19.10.2009, 18:11   #17
S_Yevgeniy
Форумчанин
 
Аватар для S_Yevgeniy
 
Регистрация: 08.07.2009
Сообщений: 246
Вопрос

Здравствуйте!!!
Проблема такого плана когда отправляешь единичное сообщение все хорошо когда несколько подряд доходит только первое.
Подскажите в чем может быть дело?
С уважением Евгений.
Да прибудет с Вами свет и радость!!!
S_Yevgeniy вне форума
Старый 16.02.2010, 19:10   #18
Alemas
Пользователь
 
Регистрация: 15.02.2010
Сообщений: 18
По умолчанию

Всем привет!
У меня вообще написание данной программы очень важно!
Облазил весь инет, уже очень долго ищу работу с Indy. Вроде научился)
НО! У меня такая проблема... У меня оба компьютера (их будет только 2) подключены к (разным!) хабам, которые в свою очередь подключены к (тоже разным!) ADSL. Получается такая картина: комп1>хаб>ADSL>инет<ADSL<хаб<комп2. Я даже не знаю какой IP прописывать в компоненте сервера!!! Пробовал уже и IP компа, и ADSL и localhost. Если его не прописывать ничего не меняется... Клиент и сервак не видят друг друга!!! Посоветуйте пожалуйста что мне делать...
Alemas вне форума
Старый 10.11.2010, 10:15   #19
c06p
Новичок
Джуниор
 
Регистрация: 10.11.2010
Сообщений: 1
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
Я не знаю, что такое otaibeTCPServer =)
А TCP клиент писал только на autoIt xD
Но я всё-таки добил инди (у меня тож не компилился тот чат (2009 делфа)) =) Вот:
Спасибо большое!
c06p вне форума
Старый 13.02.2011, 12:09   #20
shyrikos
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 11
По умолчанию

Цитата:
Сообщение от TwiX Посмотреть сообщение
Я не знаю, что такое otaibeTCPServer =)
А TCP клиент писал только на autoIt xD
Но я всё-таки добил инди (у меня тож не компилился тот чат (2009 делфа)) =) Вот:
А как реализовать в клиенте прием сообщений от сервера? ни как не пойму. Подскажите плиз.
shyrikos вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TForm & TImage & PNG & Прозрачность delphi_beginner Общие вопросы Delphi 7 19.09.2009 08:46
Просто не понимаю б чём проблема!!!!!!!(char* && index) artush1984 Общие вопросы C/C++ 12 30.05.2009 03:30
TJVRichEdit & Delphi 2009 fanatica Компоненты Delphi 1 20.04.2009 13:28
Проблема с MVC++ 2005 && 2008 на висте NetGod Софт 1 09.08.2008 17:14
Delphi & Access & Ole vodila БД в Delphi 0 15.07.2008 11:11