Entwickler-Ecke

Internet / Netzwerk - Problem mit Status von TClientSocket!


TheBlackRave - Mo 10.03.03 21:20
Titel: Problem mit Status von TClientSocket!
Ich hab a little Problem als der Code:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
If ServerStatus Then
                Begin
                ClientSocket1.Close;
                Button1.Caption:='Server verbinden';
                ServerStatus:=False;
                End
                Else
                Begin
                AdresseOk:=InputQuery('Server Adresse','Bitte geben Sie die IP vom Server ein mit dem Sie sich verbinden wollen',ServerAdresse);
                If Not AdresseOk Then Exit;
                ClientSocket1.Address:=ServerAdresse;
                ClientSocket1.Open;
                If Not ClientSocket1.Socket.Connected Then
                                                      Begin
                                                      ClientSocket1.Close;
                                                      Memo1.Lines.Add('Fehler *Es wurde kein Server an der angegebenen Adresse gefunden!');
                                                      Exit;
                                                      End;
                Button1.Caption:='Server schließen';
                ServerStatus:=True;
                End;


Im unteren Teil soll, wenn er keine Server findet

Quelltext
1:
2:
3:
4:
5:
6:
                If Not ClientSocket1.Socket.Connected Then
                                                      Begin
                                                      ClientSocket1.Close;
                                                      Memo1.Lines.Add('Fehler *Es wurde kein Server an der angegebenen Adresse gefunden!');
                                                      Exit;
                                                      End;

das er den ClientSocket1 schließt und die Procedure sofort beendet.
Funzt aber net. Es kommt ein Fehler 100061 oder so.

Mein 2 Problem wäre:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);

var I:Integer;

begin
ListBox1.Items.Clear;
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do begin
ListBox1.Items.Add(ServerSocket1.Socket.Connections[I].RemoteAddress);
end;
end;

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);

var I:Integer;

begin
ListBox1.Items.Clear;
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do begin
ListBox1.Items.Add(ServerSocket1.Socket.Connections[I].RemoteAddress);
end;
end;


Er soll alle Verbindungen in einem ListBox anzeigen. Doch funzt net.
Es ist immer eine Item drin.
Danke für die Hilfe!


Moritz M. - Mo 10.03.03 23:04

Bei Problem 1 kann ich nicht helfen, nur bei 2

TheBlackRave hat folgendes geschrieben:
Es ist immer eine Item drin.


Ich versteh dass jetzt mal so dass du mehrere Verbindungen aufgebaut hast, jedoch nur eine angezeigt wird. Das kann folgende Quelle haben:
Du hast die Verbingungen immer von der gleichen IP aufgebaut und gleiche Einträge werden Ignoriert.

Wenns dann immernochnicht geht dann versuchs mal so:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; 
  Socket: TCustomWinSocket);
begin 
  ListBox1.Items.Add(Socket.RemoteAddress);
end; 

procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject; 
  Socket: TCustomWinSocket); 
begin 
  ListBox1.Items.Delete(ListBox1.items.IndexOf(Socket.RemoteAddress));
end;

Schlag mich nicht wenn Tippfehler drin sind, habs eben mal so ab getippt. Aber so müsste es gehen.


TheBlackRave - Di 11.03.03 16:51

Danke aber das funzt net???


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TFormBCS.ServerSocketClientConnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
LBVerbindungen.Items.Add(Socket.RemoteAddress);
end;

procedure TFormBCS.ServerSocketClientDisconnect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
LBVerbindungen.Items.Delete(LBVerbindungen.Items.IndexOf(Socket.RemoteAddress));
end;


Moritz M. - Di 11.03.03 16:53

was genau geht nicht?


TheBlackRave - Di 11.03.03 16:57

er schreibt nichts in die liste! also es kommt kein error aber wenn ich mich mit einem client verbinde wird nix in die liste geschrieben!


Moritz M. - Di 11.03.03 17:00

Dann weiß ich nicht mehr weiter. Kannst mir ja mal den COde schicken, dann schau ichs mir an:
Mo@onz24.de


TheBlackRave - Di 11.03.03 17:03

Ich hab glaub ich den Fehler gefunden.
Er startet allgmein nicht die Proceduren!


Moritz M. - Di 11.03.03 17:05

dann is ja gut


TheBlackRave - Di 11.03.03 17:08

Jetzt hab ich den Fehler gefunden! 8)
Er hats eingetragen aber nicht angzeigt, weil die Textfarbe auf weiß war!
:roll:


Moritz M. - Di 11.03.03 17:11

Autsch...dsa tut weh ;)