| Autor |
Beitrag |
alias5000
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Mo 30.01.06 13:29
Hi!
Mir ist während des programmierens was komisches begegnet.
Wenn ich (in meinem Chat) die Ports der Clients (UDP und TCP - jeweils die von Indy 9) verändere, senden die TCP-, bzw. UDP-Clients ohne Probleme auf dem neuen Port.
Nur: Weder der TCP-Server, noch der UDP-Server ändern ihren Port, sie empfangen weiterhin nur auf dem alten Port.
Das komische ist, dass sich dieses Verhalten auch nicht ändere, wenn ich die Server dabei deaktiviere (active := false) oder sogar per Free und ...Create wieder neu erstelle.
Was läuft da falsch?
_________________ Programmers never die, they just GOSUB without RETURN
|
|
Narses
      

Beiträge: 10185
Erhaltene Danke: 1261
W11x64
TP3 .. D7pro .. D10.2CE
|
Verfasst: Mo 30.01.06 14:17
Moin!
Schau mal in Zeile 38 von Unit3, ich denke da liegt der Fehler...
cu
Narses
|
|
alias5000 
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Fr 03.02.06 16:20
tja hast recht. Also ich poste mal hier den code, der die Komponenten neu erstellt.
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: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54:
| MainForm.UDPServer.Free; MainForm.UDPServer := TidUDPServer.Create(MainForm); with MainForm.UDPServer do begin BroadcastEnabled := true; DefaultPort := mbTBXSpinEdit1.Value; OnUDPRead := MainForm.UDPServerUDPRead; end;
MainForm.idUDPServer1.Free; MainForm.idUDPServer1 := TidUDPServer.Create(MainForm); with MainForm.idUDPServer1 do begin BroadcastEnabled := true; DefaultPort := mbTBXSpinEdit2.Value; OnUDPRead := MainForm.UDPServerUDPRead; end;
MainForm.TCPServer.Free; MainForm.TCPServer := TIdTCPServer.Create(MainForm); with MainForm.TCPServer do begin DefaultPort := mbTBXSpinEdit1.Value + 1; ThreadMgr := MainForm.IdThreadMgrDefault1; end;
MainForm.TCPServer1.Free; MainForm.TCPServer1 := TIdTCPServer.Create(MainForm); with MainForm.TCPServer1 do begin DefaultPort := mbTBXSpinEdit2.Value + 1; ThreadMgr := MainForm.IdThreadMgrDefault1; end;
Die Clients müssen nicht zwingend neu erstellt werden.
|
Eigentlich finde ich diesen Code nicht zwingend nötig, da es sich eher um etwas prinzipelles handeln wird denk ich, wenn aber nicht, lass ich mich gerne mit was besserem belehren
_________________ Programmers never die, they just GOSUB without RETURN
|
|
alias5000 
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Fr 03.02.06 22:22
Achso:
Das iwrd sicher net am Code liegen. Grund:
Das Projekt LanChat2 ( www.lanchat2.de ) hat im neuen Protokoll ja schon 3 verschiedene Clients von 3 verschiedenen Autoren.
Und: bei allen drei geht es nicht, früher ging es auch noch nie.
Und ich bin von den dreien der einzigste, der das mit neu erstellen versucht. Die beiden anderen schalten einfach nur auch activ = false und ändern den Port dann.
Das Ergebnis ist dasselbe: die Server ändern ihren Port nicht, obwohl in Port/DefaultPort der richtige drinnen steht.
Gruß alias5000
_________________ Programmers never die, they just GOSUB without RETURN
|
|
alias5000 
      
Beiträge: 2145
WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
|
Verfasst: Mi 22.03.06 00:28
Naja, nur damit es zukünftige Leser, die dasselbe Problem haben, nicht falsche Hoffnungen bekommen: ich habs jetzt umgangen eine direkte Lösung ist nicht in Sicht. Das Programm wird neu gestartet, dnn geht es.
Gruß alias5000
_________________ Programmers never die, they just GOSUB without RETURN
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Mi 05.07.06 19:58
Man hat ja den Indy-Source, haste schonmal durchgebuggt wenne eine Anforderung an den Server kommt, ob er da auch wirklich auf den neuen Port umstellt (bei passiv)? Und zum bei aktiv-Mode, haste da mal geguckt, obs nicht auch noch einen Receive-Piort gibt? (Bei den D6 Kompos TClientSocket und TServerSocket gabs das glaub ich). Wenn ich nachher mal zeit habe, kann ich mal gucken, ob ich etwas auf Anheib finde. Zu mindestens ist es Wahrscheinlich, dass der Server zum Versenden und Empfangen verschiedene Ports nimmt.
PS. Haste schonmal Indy-10 ausprobiert?
|
|
|