Entwickler-Ecke
Internet / Netzwerk - Brauche Hilfe zu Konsolenanwendung mit serversocket
Delete - Sa 01.04.06 20:05
Titel: Brauche Hilfe zu Konsolenanwendung mit serversocket
Hallo Leute,
Ich bin grade dabei eine Konsolenanwendung zum chatten zu schreiben,
ein Client der sendet und ein Server der Empfängt.
Der Code des Clients lässt sich compilieren und ausführen.
Der Vom Server auch, allerdings bringt Delphi dann eine Fehlermeldung .
| Zitat: |
Windows Socket Fehler: Eine Anforderung zum Senden oder Empfangen von Daten wurde verhindert,
da der socket nicht verbunden ist. |
Was mache ich falsch ?
Hier der Code vom 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: 47: 48: 49: 50: 51: 52:
| program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, ScktComp;
var client:tclientsocket;
begin client:=tclientsocket.Create(nil); client.Port:=20000; client.Address:='192.168.1.46'; client.active:=true; try client.open; client.Socket.SendText('hallo'); finally client.Free; end; readln; end.[/quote]
Und der Code vom Server
[quote]program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, ScktComp;
var server:tserversocket; msg:string; begin server:=tserversocket.Create(nil); server.Port:=20000; server.active:=true; try server.open; msg:=server.Socket.ReceiveText; finally server.Free; end; readln; end. |
Moderiert von
raziel: Quote- durch Delphi-Tags ersetzt.
Marco D. - Sa 01.04.06 21:17
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:
| program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, ScktComp;
var server:tserversocket; msg:string; begin server:=tserversocket.Create(nil); server.Port:=20000; server.active:=true; try server.open; msg:=server.Socket.ReceiveText; finally server.Free; end; readln; end. |
Warum aktivierst du denn Server zweimal?
Beide Zeilen haben die gleiche Funktion.
Und hast du schon mal geprüft, ob da Client und Server überhaupt verbunden sind?
Wie man das allerdings bei Konsolenanwendungen macht, weiß ich nicht. Ansonsten macht man das mit dem Ereignis OnConnect.
Stimmen die IP und der Port denn?
Ansonsten probiere es 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:
| program Project1;
{$APPTYPE CONSOLE}
uses SysUtils, ScktComp;
var server:tserversocket; msg:string; begin server:=tserversocket.Create(nil); server.Port:=20000; try server.open; msg:=server.Socket.ReceiveText; except server.close; end; server.free readln; end. |
Narses - So 02.04.06 11:41
Moin!
Was du da vorhast, ist nicht ganz so einfach, denn die Socket-Komponenten laufen in einer Konsolenanwendung nur mit Tricks! (Hintergrund: Ereignisverarbeitung über das Application-Objekt!) Wenn du damit keine Erfahrung hast, rate ich dir dringend davon ab, das mit den Sockets zu versuchen. :|
Weiterhin: Dein Ansatz sieht mir eher so aus, als hättest du auch sonst mit den Sockets noch nicht ganz so viel gemacht... ;) (ist keine Kritik, jeder hat mal angefangen)
Deshalb wäre meine Empfehlung: Versuch dich erstmal an einer GUI-Anwendung, das ist erheblich einfacher! :D Du könntest zum Beispiel mit
diesem Tutorial [
http://www.delphi-library.de/topic_ProtokollChatTutorial+TServerClientSocket++V201_54269.html] einsteigen. ;)
cu
Narses
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!