Autor Beitrag
tante_tilli
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 01.04.06 20:05 
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
ausblenden volle Höhe 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
  { TODO -oUser -cConsole Main : Hier Code einfügen }
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
  { TODO -oUser -cConsole Main : Hier Code einfügen }
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 user profile iconraziel: Quote- durch Delphi-Tags ersetzt.
Marco D.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2750

Windows Vista
Delphi 7, Delphi 2005 PE, PHP 4 + 5 (Notepad++), Java (Eclipse), XML, XML Schema, ABAP, ABAP OO
BeitragVerfasst: Sa 01.04.06 21:17 
ausblenden 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
  { TODO -oUser -cConsole Main : Hier Code einfügen }
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:
ausblenden 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
  { TODO -oUser -cConsole Main : Hier Code einfügen }
server:=tserversocket.Create(nil);
server.Port:=20000;
try
server.open;
msg:=server.Socket.ReceiveText;
except
server.close;
end;
server.free
readln;
end.

_________________
Pascal keeps your hand tied. C gives you enough rope to hang yourself. C++ gives you enough rope to shoot yourself in the foot
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: 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 einsteigen. ;)

cu
Narses