Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Indy TCPServer & TCPClient, Реализация межсетевого взаимодействия 
:(
    Опции темы
arccos
Дата 15.9.2004, 05:02 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











ЛЮДИ КАК ПОЛЬЗОВАТЬСЯ idTcpServer'ом & idTcpClient'ом!!!
  Вверх
~FoX~
Дата 15.9.2004, 08:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Код

unit main;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 Menus, StdCtrls, Buttons, ScktComp, ExtCtrls, ComCtrls;

type
 TChatForm = class(TForm)
   MainMenu1: TMainMenu;
   File1: TMenuItem;
   Exit1: TMenuItem;
   FileConnectItem: TMenuItem;
   FileListenItem: TMenuItem;
   StatusBar1: TStatusBar;
   Bevel1: TBevel;
   Panel1: TPanel;
   Memo1: TMemo;
   Memo2: TMemo;
   N1: TMenuItem;
   SpeedButton1: TSpeedButton;
   Disconnect1: TMenuItem;
   ServerSocket: TServerSocket;
   ClientSocket: TClientSocket;
   procedure FileListenItemClick(Sender: TObject);
   procedure FileConnectItemClick(Sender: TObject);
   procedure Exit1Click(Sender: TObject);
   procedure Memo1KeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
   procedure FormCreate(Sender: TObject);
   procedure ServerSocketError(Sender: TObject; Number: Smallint;
     var Description: string; Scode: Integer; const Source,
     HelpFile: string; HelpContext: Integer; var CancelDisplay: Wordbool);
   procedure Disconnect1Click(Sender: TObject);
   procedure ClientSocketConnect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocketRead(Sender: TObject; Socket: TCustomWinSocket);
   procedure ServerSocketClientRead(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ServerSocketAccept(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ServerSocketClientConnect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocketDisconnect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocketError(Sender: TObject; Socket: TCustomWinSocket;
     ErrorEvent: TErrorEvent; var ErrorCode: Integer);
   procedure ServerSocketClientDisconnect(Sender: TObject;
     Socket: TCustomWinSocket);
 protected
   IsServer: Boolean;
 end;

var
 ChatForm: TChatForm;
 Server: string;

implementation

{$R *.DFM}

procedure TChatForm.FileListenItemClick(Sender: TObject);
begin
 FileListenItem.Checked := not FileListenItem.Checked;
 if FileListenItem.Checked then
 begin
   ClientSocket.Active := False;
   ServerSocket.Active := True;
   Statusbar1.Panels[0].Text := 'Listening...';
 end
 else
 begin
   if ServerSocket.Active then
     ServerSocket.Active := False;
   Statusbar1.Panels[0].Text := '';
 end;
end;

procedure TChatForm.FileConnectItemClick(Sender: TObject);
begin
 if ClientSocket.Active then
   ClientSocket.Active := False;
 if InputQuery('Computer to connect to', 'Address Name:', Server) then
   if Length(Server) > 0 then
     with ClientSocket do
     begin
       Host := Server;
       Active := True;
       FileListenItem.Checked := False;
     end;
end;

procedure TChatForm.Exit1Click(Sender: TObject);
begin
 ServerSocket.Close;
 ClientSocket.Close;
 Close;
end;

procedure TChatForm.Memo1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if Key = VK_Return then
   if IsServer then
     ServerSocket.Socket.Connections[0].SendText(Memo1.Lines[Memo1.Lines.Count
       - 1])
   else
     ClientSocket.Socket.SendText(Memo1.Lines[Memo1.Lines.Count - 1]);
end;

procedure TChatForm.FormCreate(Sender: TObject);
begin
 FileListenItemClick(nil);
end;

procedure TChatForm.ServerSocketError(Sender: TObject; Number: Smallint;
 var Description: string; Scode: Integer; const Source, HelpFile: string;
 HelpContext: Integer; var CancelDisplay: Wordbool);
begin
 ShowMessage(Description);
end;

procedure TChatForm.Disconnect1Click(Sender: TObject);
begin
 ClientSocket.Active := False;
 ServerSocket.Active := True;
 Statusbar1.Panels[0].Text := 'Listening...';
end;

procedure TChatForm.ClientSocketConnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteHost;
end;

procedure TChatForm.ClientSocketRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Memo2.Lines.Add(Socket.ReceiveText);
end;

procedure TChatForm.ServerSocketClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Memo2.Lines.Add(Socket.ReceiveText);
end;

procedure TChatForm.ServerSocketAccept(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 IsServer := True;
 Statusbar1.Panels[0].Text := 'Connected to: ' + Socket.RemoteAddress;
end;

procedure TChatForm.ServerSocketClientConnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Memo2.Lines.Clear;
end;

procedure TChatForm.ClientSocketDisconnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 FileListenItemClick(nil);
end;

procedure TChatForm.ClientSocketError(Sender: TObject;
 Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
 var ErrorCode: Integer);
begin
 Memo2.Lines.Add('Error connecting to : ' + Server);
 ErrorCode := 0;
end;

procedure TChatForm.ServerSocketClientDisconnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 Statusbar1.Panels[0].Text := 'Listening...';
end;

end.


Пример чатика.
Правда не на Id, но разница не сильно велика.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0869 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.