developers-forum.de

Normale Version: TClientSocket TServerSocket WinSock Problem
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
mal wieder ein nettes Problem für all die Coder hier. Warum funktioniert dass nicht:

Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBClient, MConnect, SConnect, ActnMan, ShellAPI,
  WinSock, ScktComp;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    ClientSocket1: TClientSocket;
    ServerSocket1: TServerSocket;
    Edit3: TEdit;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Label1: TLabel;
    Edit4: TEdit;
    Button6: TButton;
    Label2: TLabel;
    ComboBox1: TComboBox;
    procedure Button1Click(Sender: TObject);
    procedure ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    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);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure ServerSocket1ClientWrite(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure ClientSocket1Read(Sender: TObject; Socket: TCustomWinSocket);
    procedure ClientSocket1Write(Sender: TObject;
      Socket: TCustomWinSocket);
    procedure Button6Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1068&lngWId=7
http://www.delphi-treff.de/content/tutorials/socketkurs/
}

procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Open connetion with:');
//Form1.ClientSocket1.Address:='localhost';
//Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - Adress: '+Form1.ClientSocket1.Address);
Form1.ClientSocket1.Port:=strtoint(Form1.Edit2.Text);
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - Port: '+inttostr(Form1.ClientSocket1.Port));
Form1.ServerSocket1.Port:=strtoint(Form1.Edit2.Text);
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Server - Port: '+inttostr(Form1.ServerSocket1.Port));
Form1.ClientSocket1.Host:=Form1.Edit1.Text;
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - Host: '+Form1.ClientSocket1.Host);
//Form1.ClientSocket1.Open;
//Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - open');
//Form1.ServerSocket1.Open;
//Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Server - open');
Form1.ClientSocket1.Active:=true;
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - active');
Form1.ServerSocket1.Active:=true;
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Server - active');
end;

procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Server - receiving client connection');
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Server - Client disconnected');
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Server - Receive: '+Form1.ServerSocket1.Socket.ReceiveText);
end;

procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Server - sending text');
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - Receive: '+Form1.ClientSocket1.Socket.ReceiveText);
end;

procedure TForm1.ClientSocket1Write(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - sending text');
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - connected');
end;

procedure TForm1.ClientSocket1Connecting(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - connecting');
end;

procedure TForm1.ClientSocket1Disconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - disconnected');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.ClientSocket1.Socket.SendText(Form1.Edit3.Text);
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - Send Text: '+Form1.Edit3.Text);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
Form1.ServerSocket1.Socket.SendText(Form1.Edit4.Text);
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Server - Send Text: '+Form1.Edit4.Text);
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.ClientSocket1.Close;
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Client - Close');
Form1.ServerSocket1.Close;
Form1.Memo1.Lines.Add(DateTimeToStr(Now)+' Server - Close');
end;

procedure TForm1.Button4Click(Sender: TObject);
var URL:string;
begin
URL:='http://www.peter-munk.de';
ShellExecute(Form1.Handle,'open',PChar(URL),nil,nil,SW_SHOWNORMAL);
//----------------- Danke an www.delphi-treff.de und www.delphi-fundgrube.de ---
end;


procedure TForm1.Button5Click(Sender: TObject);
begin
close;
end;

end.


Es kommen bei mir, auch mit allen Rechten = Admin, immer zwei Fehlermeldungen, die sagen, dass die Verbindung nicht besteht.
(Ich benutzte Delphi 7, und hab die Sockets geaddet. Sie sind in
Delphi\bin\dclsockets70.dcl und überall steht, dass es so tuen sollte.)
DANKE!
MfG PCM

Ich habe noch ein bisschen die Fehlermeldungen angesehen, sie sagen aus, das der Client sich zwar verbindet, was das Programm auch ausgibt, nur das er sich dann sofort wieder disconnected. Daher rührt auch die 2. Fehlermedung. Diese Problem kommt sowohl bei windows 98 sowie windows xp vor, und sowie mit Delphi 5 und 7.
Vielen Dank im vorraus.
Ich werde wahrscheinlich nicht so schnell dazu kommen. Morgen geht es ersteinmal in den Urlaub. Ich werde mal mein neues Buch dazu befragen, vielleicht steht ja etwas über die Problematik drinne.
Jo, hat sich erledigt,
es muss Form1.ClientSocket1.Socket.Connections[0].ReceiveText
heißen. Die hätten aber auch bessere Fehlermeldungen schreiben können!
Referenz-URLs