lNet Sockets
-
- Beiträge: 440
- Registriert: So 10. Dez 2006, 14:59
- OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
- CPU-Target: 64Bit
- Kontaktdaten:
lNet Sockets
Hallo,
ich habe versucht dieses Delphi Tutorial:
http://www.delphi-library.de/topic_Mini ... 60744.html" onclick="window.open(this.href);return false;
mit lNet zu machen.
Nur bekommt der Client keine Verbindung zu stande.... "Connection Refused"
Ich glaube das der Server geht weil in der Firewall wird der als Listen eingetragen also ist der doch offen oder?
Im Anhang der Chat , .... der nich geht bzw sich noch nciht mal verbindet
ich habe versucht dieses Delphi Tutorial:
http://www.delphi-library.de/topic_Mini ... 60744.html" onclick="window.open(this.href);return false;
mit lNet zu machen.
Nur bekommt der Client keine Verbindung zu stande.... "Connection Refused"
Ich glaube das der Server geht weil in der Firewall wird der als Listen eingetragen also ist der doch offen oder?
Im Anhang der Chat , .... der nich geht bzw sich noch nciht mal verbindet
- Dateianhänge
-
Chat.rar
- (319.96 KiB) 135-mal heruntergeladen
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
1. der Server braucht meistens UDP und TCP, die müssen beide in FW offen sein
2. Verbindung abgelehnt könnte ein falscher Port sein. Guck nach welcher Port am Client eingestellt ist.
3. Läuft der Server bei dir oder woanders?
2. Verbindung abgelehnt könnte ein falscher Port sein. Guck nach welcher Port am Client eingestellt ist.
3. Läuft der Server bei dir oder woanders?
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Ah, und da der auf Windoofs läuft erkennt er den Loopback nicht. Falls du jetzt localhost eingestellt hast als Server dann änder das mal auf 127.0.0.1, respektive umgekehrt.
Bei Windoofs geht soweit ich mich erinnere localhost nämlich nicht. Das Gleiche hat man bei SQL-Servern auch, du kannst darauf einfach nicht zugreifen.
Bei Windoofs geht soweit ich mich erinnere localhost nämlich nicht. Das Gleiche hat man bei SQL-Servern auch, du kannst darauf einfach nicht zugreifen.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
So, bau mal den Server nach dem Muster wie beim Client. Dann kannst du verschiedene Ports leichter ausprobieren.
- Dateianhänge
-
Chat.zip
- (334.49 KiB) 117-mal heruntergeladen
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
-
- Beiträge: 440
- Registriert: So 10. Dez 2006, 14:59
- OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
- CPU-Target: 64Bit
- Kontaktdaten:
wer hätte es nich gedacht aber ich habe wieder einen bug 
hm bei Count kommt immer nur 1 obwohl ich mit 2 connectet war
, hat jemand ne bessere lösung um msg an alle verbundenen sockets zu verschicken? weil mit dem code was ich habe wird immer nur der letzt verbundene angeschrieben

Code: Alles auswählen
ShowMessage('Count: '+ inttostr(TCP.Count));
for i:=0 to TCP.Count do
begin
TCP.Socks[i].SendMessage(msg);
end;

-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Naja, ja nun. Bei ansynchroner Verbindung könnten das auch 3 Server sein...
Aber warum machste das dann aus einem Client. Starte doch einfach den Client nochmal. Nur wirst du da bei einer Maschine das eine oder andere Problem kriegen. Der Client-Socket kann mit gleichem Port auf nicht auf der gleichen Maschine laufen. Der Server unterscheidet normalerweise nach deinem Client-Port und der wird normalerweise durch deinen Router maskiert. Nach außen sieht der also anders aus um dich vor Angriffen zu schützen.
So gesehen ist das normal, das er immer den gleichen Client verbindet.

Aber warum machste das dann aus einem Client. Starte doch einfach den Client nochmal. Nur wirst du da bei einer Maschine das eine oder andere Problem kriegen. Der Client-Socket kann mit gleichem Port auf nicht auf der gleichen Maschine laufen. Der Server unterscheidet normalerweise nach deinem Client-Port und der wird normalerweise durch deinen Router maskiert. Nach außen sieht der also anders aus um dich vor Angriffen zu schützen.
So gesehen ist das normal, das er immer den gleichen Client verbindet.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)
-
- Beiträge: 440
- Registriert: So 10. Dez 2006, 14:59
- OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
- CPU-Target: 64Bit
- Kontaktdaten:
nein ich hatte den server bei mir aufm rechner an , einen clienten auch und ein kollege einen clienten auf seinem rechner auf , so konnte alles verbinden aber wenn er oder ich eine nachricht eingebe , wird diese nur an einen clienten weitergeschickt und nicht an beide , das meine ich , darum brauche ich irgend einen anderen code der das ermöglich das ich an alle verbundenen clienten , die texte schicken kann^^
-
- Beiträge: 440
- Registriert: So 10. Dez 2006, 14:59
- OS, Lazarus, FPC: MacOSX Lion 10.7 (L 0.9.31 FPC 2.7.1)
- CPU-Target: 64Bit
- Kontaktdaten:
Code: Alles auswählen
sock := aSocket.PrevSock;
sock2 := aSocket.NextSock;
while( sock <> nil) do begin
sock.SendMessage(msg);
sock := sock.PrevSock;
end;
while( sock2 <> nil) do begin
sock2.SendMessage(msg);
sock2 := sock2.NextSock;
end;
aSocket.SendMessage(msg);
-
- Beiträge: 1187
- Registriert: Mi 13. Dez 2006, 10:58
- OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
- CPU-Target: AMD A4-6400 APU
- Wohnort: Hamburg
Dann kannst du das nur am Server dadurch lösen, das du dir eine Client-Verwaltung einbaust. Jeder Client der sich connected (OnConnect) muß in ein Liste, z.B. FClientList: TList. Dann mußt du dir da eine Command-Struktur einbauen die bestimmte Befehle entgegennimmt. Z.B. cmdBroadcast für "sende an alle", der Befehl kommt als erstes in der Message und wird vom Server extrahiert und dann die ClientList durchlaufen und an alle außer dem Sender geschickt.
Bei sowas geht das schon ans Eingemachte.
Bei sowas geht das schon ans Eingemachte.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.
(Ringelnatz)
(Ringelnatz)