Entwickler-Ecke

Internet / Netzwerk - Socket konnte nicht erstellt werden


ich1506 - Sa 29.04.06 11:23
Titel: Socket konnte nicht erstellt werden
Hallo!
Ich arbeite mit Delphi5 und Win XP schon eine Weile. Nun wollte ich mich etwas mit dem
Stoff Netzwerkprogrammierung auseinanderstetzen. Hab mich informiert...
Wenn ich ein TClientSocket oder TServerSocket auf mein Projekt plaziere ist noch alles ok, doch wenn ich den Socket aktiviere oder mit Active=true starte dann gibt es immer, nicht nur bei selbst erstellten Projekten, eine Fehlermeldung:
Fehler: Socket konnte nicht erstellt werden.

Bisher konnte ich nicht herausfinden woran es liegt. Bitte helft mir!!


Narses - Sa 29.04.06 11:26

Moin und :welcome: im Forum!

Deine Frage bzw. dein Problem ist etwas dürftig umschrieben. Zeig doch mal deinen Code, dann kann man auch besser was dazu sagen.

Ansonsten schau mal hier, das Tut [http://www.delphi-library.de/topic_ProtokollChatTutorial+TServerClientSocket++V201_54269.html] sollte für Anfänger geeignet sein. ;)

cu
Narses


ich1506 - Sa 29.04.06 11:39

Danke für die nette Begrüßung!
Tja Code brauch ich für den Fehler eigentlich nicht.

Ich nehm ein neues Projekt mach da mein TClientSocket rauf und ändere folgendes im Objectbrowser:
Active:=true
Adress:='192.168.0.6' (für mein Netzwerk)
Port:=1024 (hab ich aus einem andere Projekt übernommen)

dann F9 zum starten und schon kommt der Fehler... :wink:


Narses - Sa 29.04.06 11:45

Moin!

user profile iconich1506 hat folgendes geschrieben:
Tja Code brauch ich für den Fehler eigentlich nicht.

Aber wir schon... ;) Denn wenn du gar nicht merkst, dass du einen Fehler machst, merken wir das ja vielleicht. :D

user profile iconich1506 hat folgendes geschrieben:
Ich nehm ein neues Projekt mach da mein TClientSocket rauf und ändere folgendes im Objectbrowser:
Active:=true
Adress:='192.168.0.6' (für mein Netzwerk)
Port:=1024 (hab ich aus einem andere Projekt übernommen)

dann F9 zum starten und schon kommt der Fehler... :wink:

Klar, der Client-Socket versucht eine Verbindung aufzubauen, aber da läuft möglicherweise ja gar kein Serverdienst. Du darfst erst dann .Active auf TRUE setzen, wenn du (einigermaßen) sicher bist, dass da auch am anderen Ende ein Serverdienst (TServerSocket) auf eine Verbindung wartet - sonst gibt es völlig zu Recht einen Fehler. ;)

Nochwas: Du solltest für eigene Anwendungen Portnummern (deutlich) über 1024 verwenden, am besten 5-stellige.

cu
Narses


ich1506 - Sa 29.04.06 11:59

Ok, das leuchtet ein, aber das passiert ja auch wenn ich einen Server plaziere und wie im Tut mit
ServerSocket1.Port := 10210; // (zB)
ServerSocket1.Open;
starte.

@narses:
Welchen Portbereich würdes du empfehlen?


Narses - Sa 29.04.06 12:05

Moin!

Pack mal dein (Beispiel-)Projekt (ohne die EXE) in ein ZIP und hier in den Anhang, möchte mal reinsehen, was du da tust. ;)

cu
Narses


Fighter#1 - Sa 29.04.06 12:24

Active:=True
Immer erst dann aktivieren, wenn Port und so angegeben sind, so:

Delphi-Quelltext
1:
2:
3:
ClientSocket1.Port:=844;
ClientSocket1.Host:='ipadresse';
ClientSocket1.active:=True;


ich1506 - Sa 29.04.06 12:35

Hier mal Mein Project als zip:


Narses - Sa 29.04.06 13:01

Moin!

Bist du sicher, dass es die IP 192.168.0.6 in deinem Netz (aktuell) gibt?

Probier das mal so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
// Server
procedure TForm1.Button1Click(Sender: TObject);
begin
  ServerSocket1.Port := 10201;
  ServerSocket1.Open;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if ServerSocket1.Active then
    ServerSocket1.Close;
end;

// Client
procedure TForm1.Button1Click(Sender: TObject);
begin
  ClientSocket1.Port := 10201;
  ClientSocket1.Host := 'localhost'// der eigene Rechner
  ClientSocket1.Open;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if ClientSocket1.Active then
    ClientSocket1.Close;
end;

Dann erst das Serverprogramm starten und Button anklicken, dann den Client starten und den Button anklicken. Darf dann so keinen Fehler mehr geben.

Du hattest in deinen Tests die Sockets nicht wieder geschlossen, unschön. ;)

cu
Narses


ich1506 - Sa 29.04.06 13:02

Bitte sagt mir, ob es bei euch läuft, dann weiß ich ob ich nur zu dusselig bin eine Komponente aufs Fenster zu ziehen, oder ob es an etwas Anderem liegt.


Fighter#1 - Sa 29.04.06 13:03

:autsch: :autsch: :autsch:
:mahn: Was hab ich oben geschrieben?? :mahn:


Nicht ClientSocket1.Address sondern .Host


Narses - Sa 29.04.06 13:15

Moin!

user profile iconich1506 hat folgendes geschrieben:
Bitte sagt mir, ob es bei euch läuft, dann weiß ich ob ich nur zu dusselig bin eine Komponente aufs Fenster zu ziehen, oder ob es an etwas Anderem liegt.

Klar, wenn ich eine Adresse eingeben, die´s in meinem Netz gibt, läuft´s auch. ;)

cu
Narses


ich1506 - Sa 29.04.06 13:23

Das Problem bleibt!
Selbst wenn ich den Server plaziere kommt der Fehler...

Und 1. das ist meine Ip-Adresse und 2. Wenn ich den Namen hin schreibe, funktioniert es auch nicht. (Im richtigen Feld :!: :wink: )
Wenn mein Projekt bei Narses läuft, dann liegt es wohl an etwas anderem...

:?: :?: :?:


Narses - Sa 29.04.06 13:26

Moin!

Firewall/InternetSecurity/sonstigesGeraffel mal ausgemacht? ;)

cu
Narses


ich1506 - Sa 29.04.06 13:38

user profile iconNarses hat folgendes geschrieben:

Firewall/InternetSecurity/sonstigesGeraffel mal ausgemacht? ;)

Ja, dürfte eigentlich nichts hinderliches mehr sein...


ich1506 - Sa 29.04.06 14:26

Ersteinmal an alle vielen Dank!

Ich weiß zwar nicht warum es bei mir nicht funktioniert, aber naja...

Ich hab Delphi mal auf einem Win 2000 PC installiert und ... keine Fehlermeldung :shock: *grr*
Dort funktioniert es, nur auf meinem Pc wieder mal nicht. :cry:

Vielen Dank! :)


ich1506 - Sa 01.07.06 20:32

ich hab dann Windows neu installiert und was war?

Alles funktioniert!!! :lol: