Текущий архив: 2006.04.16;
Скачать: CL | DM;
ВнизСокеты Найти похожие ветки
← →
ZLOFENIX © (2006-01-03 06:54) [0]У меня такой вопроспо: мне надо с одного приложения подключится одновременно к 2 ИЛИ БОЛЬШЕ серверам, подскажите как это сделать ?
Или при помощи 1 сервера подключиться к 2 ?
← →
FrykT © (2006-01-03 10:13) [1]Сокеты создаешь динамически и хранишь на них ссылки в динамическом массиве, или в экземпляре класса TList.
Ну например массив Clients: array of TClientSoscket;
Вот для примера:unit fmSockets;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ScktComp;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
private
{ Private declarations }
public
{ Public declarations }
procedure SocketRead(Sender: TObject; Socket: TCustomWinSocket);
procedure SocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure SocketClose(Sender: TObject; Socket: TCustomWinSocket);
procedure SocketConnect(Sender: TObject; Socket: TCustomWinSocket);
function ConnectClient(AHost: string; APort: Integer): boolean;
end;
var
Form1: TForm1;
Clients: array of TClientSocket;
implementation
{$R *.dfm}
{ TForm1 }
function TForm1.ConnectClient(AHost: string; APort: Integer): boolean;
var
Client: TClientSocket;
begin
Result := false;
Client := TClientSocket.Create(self);
Client.Host := AHost;
Client.Port := APort;
Client.ClientType := ctNonBlocking;
Client.OnConnect := SocketConnect;
Client.OnDisconnect := SocketClose;
Client.OnRead := SocketRead;
Client.OnError := SocketError;
try
Client.Open;
except
Client.Free;
exit;
end;
SetLength(Clients, Length(Clients) + 1);
Clients[Length(Clients)] := Client;
Result := true;
end;
procedure TForm1.SocketClose(Sender: TObject; Socket: TCustomWinSocket);
var
I: Integer;
Client: TClientSocket;
begin
for I:= Length(Clients) -1 downto 0 do
if Clients[I].Socket = Socket then
begin
Client := Clients[I];
Clients[I] := nil;
Client.Free;
break;
end;
end;
procedure TForm1.SocketConnect(Sender: TObject; Socket: TCustomWinSocket);
begin
//ONCONNECT
end;
procedure TForm1.SocketError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
begin
ErrorCode := 0;
end;
procedure TForm1.SocketRead(Sender: TObject; Socket: TCustomWinSocket);
var
buf: string;
begin
//ONREAD
//пример:
buf := Socket.ReceiveText;
end;
end.
← →
FrykT © (2006-01-03 10:14) [2]поправка:
Clients[Length(Clients) - 1] := Client;
← →
ZLOFENIX © (2006-01-04 02:00) [3]спасибо
вопрос исчерпан
Страницы: 1 вся ветка
Текущий архив: 2006.04.16;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.045 c