
En fín... estoy tratando de entender la conexión inversa en Delphi pero no me dá, cuando por ejemplo intento envíar un mensaje me salta error, aunque "supuestamente" ya conecta pero parece como si algo hiciera conflicto ya que siempre me lo desconecta y me salta error.
Código Completo del cliente
Código
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, XPMan, ScktComp;
type
TForm1 = class(TForm)
ServerSocket1: TServerSocket;
Label1: TLabel;
Edit1: TEdit;
XPManifest1: TXPManifest;
Button1: TButton;
Button2: TButton;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
procedure ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button2Click(Sender: TObject);
procedure ServerSocket1Listen(Sender: TObject;
Socket: TCustomWinSocket);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ServerSocket1.Port:= 1234;
ServerSocket1.Active:= True;
end;
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label2.Caption:= 'Estado: Conectado';
end;
procedure TForm1.ServerSocket1ClientError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
Label2.Caption:= 'Estado: Error';
end;
procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label2.Caption:= 'Estado: Desconectado';
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
If Socket.ReceiveText = 'saludo' Then
ShowMessage('Te han saludado desde el servidor con una conexión inversa');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ServerSocket1.Socket.SendText('saludo');
end;
procedure TForm1.ServerSocket1Listen(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label2.Caption:= 'Estado: Escuchando...';
end;
end.
Código completo del servidor
Código
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ScktComp;
type
TForm1 = class(TForm)
ClientSocket1: TClientSocket;
Label1: TLabel;
Button1: TButton;
procedure ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
procedure ClientSocket1Connecting(Sender: TObject;
Socket: TCustomWinSocket);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ClientSocket1Connect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label1.Caption:= 'Estado: Conectado';
end;
procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label1.Caption:= 'Estado: Desconectado';
end;
procedure TForm1.ClientSocket1Error(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:= 0;
Label1.Caption:= 'Estado: Error';
end;
procedure TForm1.ClientSocket1Read(Sender: TObject;
Socket: TCustomWinSocket);
begin
If Socket.ReceiveText = 'saludo' Then
ClientSocket1.Socket.SendText('saludo');
end;
procedure TForm1.ClientSocket1Connecting(Sender: TObject;
Socket: TCustomWinSocket);
begin
Label1.Caption:= 'Estado: Conectando';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Host:= '127.0.0.1';
ClientSocket1.Port:= 1234;
ClientSocket1.Active:= True;
end;
end.
A ver si me pueden ayudar y encontrar el error en el código

Muchas gracias.
Ghost.










Autor



En línea



creo que no debe existir un procedimiento Connect sino sera cuestion del firewall 
