Entwickler-Ecke
Internet / Netzwerk - [Indy 9] #10061 Socket Exception
Xenomorph150 - Mo 13.02.06 09:25
Titel: [Indy 9] #10061 Socket Exception
Hallo Leute,
für ein Schulprojekt soll ich einen Datenaustausch (Chat) zwischen zwei PCs realisieren.
Rahmenbedingungen dafür sind Delphi 7 und die Indy Komponeten (Version egal).
Da ich für die Version 10 bzw. 10.1.5 kein Tutorial fand, bzw. es mit einem für die Version 8 nicht kompatibel war, nahm ich nun die Version 9.0.19. Ich schrieb mal die Software nach Gut-dünken und dem Tutorial.
Leider wirft er mit jetzt immer eine #10061 Exception "Connection Refused". (beim Server)
Könnte vielleicht einer mir einen Tipp geben, wo der Fehler liegt bzw. hat jemand ein einfaches und gut verständliches Tutorial?
Client
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: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient;
type TForm1 = class(TForm) TCPClient: TIdTCPClient; Button1: TButton; Chatlog: TListBox; Edit1: TEdit; procedure Button1Click(Sender: TObject);
private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin
with TCPClient do begin Connect; try Chatlog.Items.Add(TCPClient.ReadLn); finally Disconnect; end; end; end;
end. |
Server:
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: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IdBaseComponent, IdComponent, IdTCPServer;
type TForm1 = class(TForm) TCPServer1: TIdTCPServer; procedure FormCreate(Sender: TObject); procedure TCPServer1Execute(AThread: TIdPeerThread); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.TCPServer1Execute(AThread: TIdPeerThread); begin with AThread.Connection do
begin WriteLn('Hello from Basic Indy Server server.'); Disconnect; end; end;
procedure TForm1.FormCreate(Sender: TObject); begin TCPServer1.Active := True; end;
end. |
digi_c - Mo 13.02.06 09:43
Also die den Serverport hast du im Objektinspektor eingestellt?
Ich glaube der Client.Port war der Port der für die ausgehende Kommunikation geöffnet wird und ist nicht der ZielPort des Hosts.
Überprüfe mal am besten erstmal mit
netstat -aoder
http://www.sysinternals.com/Utilities/TcpView.html ob der Server Port überhaupt geöffnet wird. Wenn dem so ist probier mal mit
telnet localhost 666 ein paar Zeilen zu schreiben.
Xenomorph150 - Mo 13.02.06 09:50
Danke für den Tipp,
also der Server antwortet schon mal (mit Telnet).
Habe einen Fehler gemacht beim schreiben, der Fehler tritt im CLIENT auf,
nicht im Server wie geschrieben!
Irgendeine Idee?
Ich habe den BoundPort schon auf 666 gelegt.
MFg
Nico
digi_c - Mo 13.02.06 16:28
Firewall z.B. die von XP?
Ich wüßte jetzt nicht wie man da weiter "rein schauen" kann, außer die Verbindungsparameter zu überprüfen(Ziel IP/Port) :?
Xenomorph150 - Mo 13.02.06 16:49
Hab den Bound Port beim Client jetzt gelöst und nur den normalen Port eingetragen. Alle anderen Einstellungen im Objektinspektor nochmal überprüft. Jetzt klappts.
Vielen Dank!
Nico
Narses - Mo 13.02.06 17:16
Moin und :welcome: im Forum!
Xenomorph150 hat folgendes geschrieben: |
| Ich habe den BoundPort schon auf 666 gelegt. |
Ich möchte nicht versäumen darauf hinzuweisen, dass Portnummern bis einschließlich 1024 für
well-known-services reserviert sind; Anwendungen sollten Portnummern oberhalb 1024 verwenden! :mahn: :wink:
cu
Narses
Xenomorph150 - Mo 13.02.06 17:27
Hi,
und vielen Dank für die freundliche Begrüssung!
Ja da war noch *irgendwas*, aber da ich grade einfallslos war,
habe ich den guten alten Quake Standardport genommen, da ich mir sicher war,
dass den im moment keine Anwendung in der Schule benutzt.
(Die spielen eh alle nur Blobby Volley ~.~''')
Am Ende wird das natürlich noch geändert,
im moment gings nur darum es überhaupt zum laufen zu bringen,
wobei dies wirklich eine schwere Geburt war (irgendwie machts einem Indy nicht so leicht wie ichs gern hätte ^^').
Dennoch vielen Dank,
ich werde deinen Rat beherzigen!
Nico
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!