Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ClientSocket


Страницы:   1 2

Profik ©   (2005-07-22 15:32:00) 

Нада простенький пример пересылки стринги через сокеты


Profik   (2005-07-22 16:19:00) [21]

//Сканирование сети
var u,result,i:integer;
 Computer      : Array[1..500] of String[25];
 ComputerCount : Integer;
 s:string;
 ss:string[2];
 Size         : cardinal;
   PRes         : PChar;
   BRes         : boolean;
   svernuto: boolean;
........
procedure FindAllComputers(Workgroup: String);
Var
 EnumHandle  : THandle;
 WorkgroupRS : TNetResource;
 Buf         : Array[1..500] of TNetResource;
 BufSize     : Cardinal;
 Entries     : Cardinal;
 Result      : Integer;

begin
 ComputerCount := 0;
 Workgroup := Workgroup + #0;
 FillChar(WorkgroupRS, SizeOf(WorkgroupRS) , 0);
 With WorkgroupRS do begin
   dwScope := 2;
   dwType := 3;
   dwDisplayType := 1;
   dwUsage := 2;
   lpRemoteName := @Workgroup[1];
 end;

 WNetOpenEnum( RESOURCE_GLOBALNET,
               RESOURCETYPE_ANY,
               0,
               @WorkgroupRS,
               EnumHandle );

 Repeat
   Entries := 1;
   BufSize := SizeOf(Buf);

   Result :=
    WNetEnumResource( EnumHandle,
                      Entries,
                      @Buf,
                      BufSize );
  If (Result = NO_ERROR) and (Entries = 1) then begin
     Inc( ComputerCount );
     Computer[ ComputerCount ] := StrPas(Buf[1].lpRemoteName);
     delete(Computer[ ComputerCount ],1,2);
     form1.ComboBox1.Items.Add(Computer[ ComputerCount ]);
   end;
 Until (Entries <> 1) or (Result <> NO_ERROR);

 WNetCloseEnum( EnumHandle );
end;  { Find All Computers }


Wm.DIGGER   (2005-07-22 16:18:00) [22]

Digitman ©   (22.07.05 16:03) [3]

а что тебе не нравится?
вообще-то всё работает и очень хорошо!


Digitman   (2005-07-22 16:03:00) [23]


> Wm.DIGGER ©   (22.07.05 15:38) [2]


отсебячина


Wm.DIGGER   (2005-07-22 15:38:00) [24]

Пример сервера:


unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   ServerSocket1: TServerSocket;
   Memo1: TMemo;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure ServerSocket1Listen(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ServerSocket1Accept(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ServerSocket1ClientConnect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ServerSocket1ClientDisconnect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ServerSocket1ClientError(Sender: TObject;
     Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
     var ErrorCode: Integer);
   procedure ServerSocket1ClientRead(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Memo1.Clear;
Form1.ServerSocket1.Port := 65000;
Form1.ServerSocket1.ServerType := stNonBlocking;
Form1.ServerSocket1.Active := true;
Form1.Button1.Enabled := false;
Form1.Button2.Enabled := true;
Form1.Memo1.Lines.Append('Запуск сервера ... Запущен.');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
while Form1.ServerSocket1.Active do Form1.ServerSocket1.Active := false;
Form1.Memo1.Lines.Append('Остановка сервера ... Остановлен');
Form1.Button1.Enabled := true;
Form1.Button2.Enabled := false;
end;

procedure TForm1.ServerSocket1Listen(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Append('Слушаем порт: '+ IntToStr(Form1.ServerSocket1.Port));
end;

procedure TForm1.ServerSocket1Accept(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Append('Клиент подключился.');
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Append('Подключается клиент ...');
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Append('Клиент отключился.');
end;

procedure TForm1.ServerSocket1ClientError(Sender: TObject;
 Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
 var ErrorCode: Integer);
begin
Form1.Memo1.Lines.Append('Ошибка при подключении: '+IntToStr(ErrorCode));
ErrorCode := 0;
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Append('');
Form1.Memo1.Lines.Append('Получено сообщение от клиента');
Form1.Memo1.Lines.Append('> '+Socket.ReceiveText);

// 0 - номер подключившегося клиента ...
Form1.ServerSocket1.Socket.Connections[0].SendText('Ну, и иди ты :)))' + #13#10);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Button2Click(nil);
end;

end.



Пример клиента:


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ScktComp, Registry, IdBaseComponent, IdComponent,
 IdTCPConnection, IdTCPClient, IdHTTP;

type
 TForm1 = class(TForm)
   Button1: TButton;
   ClientSocket1: TClientSocket;
   Memo1: TMemo;
   Button2: TButton;
   Button3: TButton;
   procedure Button1Click(Sender: TObject);
   procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
   procedure FormClose(Sender: TObject; var Action: TCloseAction);
   procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
     ErrorEvent: TErrorEvent; var ErrorCode: Integer);
   procedure ClientSocket1Connect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocket1Connecting(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure ClientSocket1Disconnect(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.ClientSocket1.Port := 65000;
Form1.ClientSocket1.Host := '127.0.0.1';
Form1.ClientSocket1.Active := true;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Append('');
Form1.Memo1.Lines.Append('Получен ответ от сервера');
Form1.Memo1.Lines.Append('> ' + Socket.ReceiveText);
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.Button3Click(nil);
end;

procedure TForm1.ClientSocket1Error(Sender: TObject;
 Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
 var ErrorCode: Integer);
begin
Form1.Memo1.Lines.Append('Ошибка: ' +inttostr(ErrorCode));
ErrorCode := 0;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Append('Подключён к ' + Form1.ClientSocket1.Host + ' [ ' + inttostr(Form1.ClientSocket1.Port) + ' ] ');
end;

procedure TForm1.ClientSocket1Connecting(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Append('Подключаюсь ... ');
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Append('Отключен.');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if Form1.ClientSocket1.Active then Form1.ClientSocket1.Socket.SendText('Привет!!! Я типа клиент!' + #13#10);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
while Form1.ClientSocket1.Active do Form1.ClientSocket1.Active := false;
end;

end.


Digitman   (2005-07-22 15:37:00) [25]

он у тебя перед носом - в каталоге с демо-проектами в составе Делфи-поставки


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо