Fórum Problema de Conexao #519966
15/05/2015
0
estou criando um sistema retaguarda com Firebird + Data Snap no Rad Studio XE6 mais tem um problema quando troco de IP, o Servidor Abre, Porem sistema do lado do cliente não abre da problema de Socket o que eu devo fazer para que não der erro
Aislan Sousa
Curtir tópico
+ 0Posts
18/05/2015
Jiraya San
Gostei + 0
19/05/2015
Aislan Sousa
Gostei + 0
19/05/2015
Perivaldo Martins
Boa sorte e bons códigos!
Gostei + 0
19/05/2015
Aislan Sousa
É Isso Amigo, é isso Mesmo o que eu posso fazer para consertar isso
Veja meu código completo no Server e no Client
Servidor
///////////////////////////////////
unit UServidor;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Buttons, Data.DBXFirebird, Data.DB,DBXJSON,
Data.SqlExpr,IniFiles;
type
TF_Servidor = class(TForm)
PN_Topo: TPanel;
Panel2: TPanel;
Panel3: TPanel;
Edit_Nova_Porta: TEdit;
Label1: TLabel;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
Edit_Porta_Atual: TEdit;
Edit_Caminho_Atual: TEdit;
Conexao: TSQLConnection;
Edit_Novo_Caminho: TEdit;
SpeedControle: TSpeedButton;
Edit1: TEdit;
SpeedButton1: TSpeedButton;
Edit_Novo_IP: TEdit;
Edit_IP_Atual: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
SpeedButton6: TSpeedButton;
OpenDialog1: TOpenDialog;
Edit2: TEdit;
Edit3: TEdit;
SpeedButton7: TSpeedButton;
Edit4: TEdit;
procedure FormActivate(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedControleClick(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure Edit_Nova_PortaChange(Sender: TObject);
procedure SpeedButton7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
F_Servidor: TF_Servidor;
Iniconf:TIniFile;
implementation
{$R *.dfm}
uses SC, SM;
procedure TF_Servidor.Edit_Nova_PortaChange(Sender: TObject);
begin
Edit2.Text := Edit_Nova_Porta.Text;
end;
procedure TF_Servidor.FormActivate(Sender: TObject);
begin
Edit2.Text := Edit_Nova_Porta.Text;
PN_Topo.Caption := 'Servidor do SysComer';
Edit_Porta_Atual.Text := Iniconf.ReadString('SysComer','Porta','');
Edit_IP_Atual.Text := Iniconf.ReadString('SysComer','IP','');
Edit_Caminho_Atual.Text := Iniconf.ReadString('SysComer','Database','');
Edit2.Text := Iniconf.ReadString('SysComer','Porta','');
end;
procedure TF_Servidor.SpeedControleClick(Sender: TObject);
begin
if SpeedControle.Caption = 'Iniciar' then
begin
uSC.Transporte.Port := StrToInt(Edit2.Text);
Conexao.Params.Values['Database'] := Edit1.Text;
uSC.DSServer1.Start;
Conexao.Connected := true;
if uSC.DSServer1.Started then SpeedControle.Caption := 'Parar';
PN_Topo.Caption := 'Conectado';
Edit_Porta_Atual.Text := IntToStr(uSC.Transporte.Port);
Edit_Caminho_Atual.Text := Conexao.Params.Values['Database'];
end else
begin
uSC.DSServer1.Stop;
Conexao.Connected := false;
if not uSC.DSServer1.Started then SpeedControle.Caption := 'Iniciar';
PN_Topo.Caption := 'Desconectado';
Edit_Porta_Atual.Text := '';
Edit_Caminho_Atual.Text := '';
end;
end;
procedure TF_Servidor.FormCreate(Sender: TObject);
begin
Iniconf:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'SysComer.ini');
Edit1.Text := Iniconf.ReadString('SysComer','IP','')+':'+Iniconf.ReadString('SysComer','Database','');
end;
procedure TF_Servidor.SpeedButton1Click(Sender: TObject);
begin
Edit1.Text := Conexao.Params.Values['Database'];
Edit_Nova_Porta.Text := IntToStr(uSC.Transporte.Port);
end;
procedure TF_Servidor.SpeedButton3Click(Sender: TObject);
begin
uSC.Transporte.Port := StrToInt(Iniconf.ReadString('SysComer','Porta',''));
Conexao.Params.Values['Database']:= Iniconf.ReadString('SysComer','Database','');
uSC.DSServer1.Start;
Conexao.Connected := true;
//Conexao.Params.Add('Database=' +Edit_Novo_Caminho.Text;
//Conexao.Params.Values['Port'] := Edit_Nova_Porta.Text;
end;
procedure TF_Servidor.SpeedButton4Click(Sender: TObject);
begin
Iniconf.WriteString('SysComer','Porta',Edit_Nova_Porta.Text);
Iniconf.WriteString('SysComer','IP',Edit_Novo_IP.Text);
Iniconf.WriteString('SysComer','Database',Edit_Novo_Caminho.Text);
//Iniconf.WriteString('SysComer','Database',Edit_IP_Atual.Text+':'+Edit_Caminho_Atual.Text);
end;
procedure TF_Servidor.SpeedButton5Click(Sender: TObject);
begin
Close;
end;
procedure TF_Servidor.SpeedButton6Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
Edit_Novo_Caminho.Text := OpenDialog1.FileName;
end;
end;
procedure TF_Servidor.SpeedButton7Click(Sender: TObject);
begin
Edit3.Text := Conexao.Params.Values['Database'];
Edit4.Text := IntToStr(uSC.Transporte.Port);
end;
end.
/////////////////////////////////
Client
//////////////////////////////////////
unit UConfiguracao;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, Vcl.ExtCtrls, Vcl.StdCtrls,
Vcl.Grids, Vcl.DBGrids, Data.DB, Data.DBXDataSnap, IPPeerClient,
Data.DBXCommon, Data.SqlExpr, IniFiles;
type
TF_Configuracao = class(TForm)
PN_Topo: TPanel;
Panel2: TPanel;
Panel3: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
SpeedButton3: TSpeedButton;
SpeedButton4: TSpeedButton;
Edit_Porta: TEdit;
Edit_Caminho: TEdit;
Label1: TLabel;
Label2: TLabel;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Edit_IP: TEdit;
SpeedButton5: TSpeedButton;
Edit_Pot: TEdit;
Edit1: TEdit;
Conexao: TSQLConnection;
RadioButton1: TRadioButton;
SpeedButton6: TSpeedButton;
procedure SpeedButton4Click(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure RadioButton1Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
private
{ Private declarations }
public
ArquivoINI: TIniFile;
{ Public declarations }
end;
var
F_Configuracao: TF_Configuracao;
implementation
{$R *.dfm}
uses CC, uDM, Proxy1;
procedure TF_Configuracao.FormActivate(Sender: TObject);
begin
PN_Topo.Caption := 'Desconectado';
end;
procedure TF_Configuracao.FormCreate(Sender: TObject);
begin
ArquivoINI:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'SysComer.ini');
Edit_Porta.Text := ArquivoINI.ReadString('SysComer','Port','');
Edit_Caminho.Text := ArquivoINI.ReadString('SysComer','HostName','');
end;
procedure TF_Configuracao.FormShow(Sender: TObject);
begin
//Conexao.Connected := true;
end;
procedure TF_Configuracao.RadioButton1Click(Sender: TObject);
begin
Conexao.Connected := True;
end;
procedure TF_Configuracao.SpeedButton1Click(Sender: TObject);
begin
if SpeedButton1.Caption = 'Conectar' then
begin
DM.Conexao. Close;
DM.Conexao.Params.Clear;
DM.Conexao.Params.Add('DriverName=DataSnap');
DM.Conexao.Params.Add('DriverUnit=Data.DBXDataSnap');
DM.Conexao.Params.Add('HostName='+ Edit_Caminho.Text);
DM.Conexao.Params.Add('Port='+ Edit_Porta.Text);
DM.Conexao.Params.Add('CommunicationProtocol=tcp/ip');
DM.Conexao.Params.Add('DatasnapContext=datasnap/');
DM.Conexao.Params.Add('DriverAssemblyLoader=Borland.Data.TDBXClientDriverLoader,Borland.Data.DbxClientDriver,Version=20.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b');
DM.Conexao.Params.Add('ServerConnection=DSAdmin.GetConnection("COM")');
DM.Conexao.Params.Add('Filters={}');
//DM.Conexao.Connected := True;
DM.CDS_Agenda.Open;
PN_Topo.Caption := 'Conectado';
if DM.Conexao.Connected then SpeedButton1.Caption := 'Desconectar';
end else
begin
DM.Conexao.Close;
DM.CDS_Agenda.Close;
if Not DM.Conexao.Connected then SpeedButton1.Caption := 'Conectar';
PN_Topo.Caption := 'Desconectado';
end;
end;
procedure TF_Configuracao.SpeedButton2Click(Sender: TObject);
begin
ArquivoINI.WriteString('SysComer','Port',Edit_Porta.Text);
ArquivoINI.WriteString('SysComer','HostName',Edit_Caminho.Text);
end;
procedure TF_Configuracao.SpeedButton3Click(Sender: TObject);
begin
ArquivoINI:= TIniFile.Create(ExtractFilePath(Application.ExeName)+'SysComer.ini');
Edit_Caminho.Text := DM.Conexao.Params.Values['HostName'];
end;
procedure TF_Configuracao.SpeedButton4Click(Sender: TObject);
begin
Close;
end;
procedure TF_Configuracao.SpeedButton5Click(Sender: TObject);
var oProxy : TuSMClient; // Classe que representa meu server module do servidor
begin
//DM.Conexao.Connected := true;
oProxy := TuSMClient.Create(DM.Conexao.DBXConnection); // Criando o Objeto Proxy
try
Edit_IP.Text := oProxy.Fala_IP.ToString; //Executando a função fAloMundo do Servidor
Edit_Pot.Text := oProxy.Fala_Porta.ToString; //Executando a função fAloMundo do Servidor
finally
oProxy.Free; //liberando o Objeto Proxy da memória
end;
end;
procedure TF_Configuracao.SpeedButton6Click(Sender: TObject);
begin
Conexao.Close;
Conexao.Params.Clear;
Conexao.Params.Add('DriverUnit=Data.DBXDataSnap');
Conexao.Params.Add('HostName='+ Edit_Caminho.Text);
Conexao.Params.Add('Port='+Edit_Porta.Text);
Conexao.Params.Add('CommunicationProtocol=tcp/ip');
Conexao.Params.Add('DatasnapContext=datasnap/');
Conexao.Params.Add('DriverAssemblyLoader=Borland.Data.TDBXClientDriverLoader,Borland.Data.DbxClientDriver,Version=20.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b');
Conexao.Params.Add('Filters={}');
Conexao.Connected := True;
DM.Cds_Agenda.Open;
end;
end.
//////////////////////////////////////////////////////////////
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)