Jump to content

Marcos melo sales

Members
  • Content count

    1
  • Joined

  • Last visited

Community Reputation

0 Comum

About Marcos melo sales

Recent Profile Visitors

187 profile views
  1. Eu tenho um aplicativo cliente> servidor, onde são estabelecidas conexões usando componentes Socket ( TClientSocketdo cliente se conecta ao TServerSocketservidor). Agora, desejo que os clientes se conectem primeiro a um terceiro aplicativo (um tipo de "ponte de conexão" ou "repetidor") que será executado em um Windows VPS e deve direcionar essas conexões dos clientes para o aplicativo do servidor em execução no servidor pc. Exemplo: Provavelmente (não tenho certeza) esse tipo de "ponte de conexão" ou "repetidor" que será executado no VPS pode ser semelhante ao aplicativo de servidor que será executado no servidor pc, mas não sei como conectar e fazer o gerenciamento da conexão / desconexão e o envio / recebimento de dados entre esses três aplicativos. Alguém poderia me dizer como isso pode ser feito de uma maneira simples e, se possível, também fornecer um exemplo de código sobre isso? Abaixo segue o código do cliente e servidor (servidor que será executado no servidor pc), isso é tudo o que tenho até agora. Cliente: uses ScktComp; type TForm1 = class(TForm) ClientSocket1: TClientSocket; Timer1: TTimer; Label1: TLabel; procedure ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Connecting(Sender: TObject; Socket: TCustomWinSocket); procedure ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); procedure Timer1Timer(Sender: TObject); procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin Label1.Caption := 'CONNECTED'; end; procedure TForm1.ClientSocket1Connecting(Sender: TObject; Socket: TCustomWinSocket); begin Label1.Caption := 'CONNECTING...'; end; procedure TForm1.ClientSocket1Disconnect(Sender: TObject; Socket: TCustomWinSocket); begin Label1.Caption := 'DISCONNECTED'; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if not ClientSocket1.Active then ClientSocket1.Active := true; end; procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin ErrorCode := 0; end; procedure TForm1.ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket); var s: string; begin s := Socket.ReceiveText; if s = 'CMD' then Socket.SendText('Hello, here is Client: ' + Socket.LocalHost + '!'); end; end. Servidor: uses ScktComp; type TForm1 = class(TForm) ListView1: TListView; ServerSocket1: TServerSocket; PopupMenu1: TPopupMenu; SON: TMenuItem; SOFF: TMenuItem; SCMD: TMenuItem; procedure ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); procedure ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); procedure SONClick(Sender: TObject); procedure SOFFClick(Sender: TObject); procedure SCMDClick(Sender: TObject); procedure ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); var Item: TListItem; begin Item := ListView1.Items.Add; Item.Caption := IntTostr(Socket.Handle); Item.SubItems.Add(Socket.RemoteAddress); Item.SubItems.Add(Socket.RemoteHost); Item.Data := Socket.Data; end; procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; Socket: TCustomWinSocket); var Item: TListItem; begin Item := ListView1.FindCaption(0, inttostr(Socket.Handle), false, true, false); if Item <> nil then Item.Delete; end; procedure TForm1.ServerSocket1ClientError(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin ErrorCode := 0; end; procedure TForm1.SONClick(Sender: TObject); begin ServerSocket1.Active := true; end; procedure TForm1.SOFFClick(Sender: TObject); begin ServerSocket1.Active := false; end; procedure TForm1.SCMDClick(Sender: TObject); begin if ListView1.Selected = nil then exit; ServerSocket1.Socket.Connections[ListView1.ItemIndex].SendText('CMD'); end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var s: string; begin s := Socket.ReceiveText; if s <> '' then ShowMessage(s); end; end.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.