Entwickler-Ecke

Internet / Netzwerk - chat programm -- error


satan - Do 18.12.08 21:12
Titel: chat programm -- error
servuß, bin neu hier, extra wegen dem angemeldet

bin noch nicht so gut in delphi, hab davor ein bisschen in cpp gecodet, aber da ich rad's so mag und delphi toll finde, code ich jetzt in delphi

chat programm, ganz simpel, eigentlich ganz einfach, nach einem bespiel gecodet...
aber: "Asynchroner Socket error 10061"
und "Listenindex überschreitet das maximum(0)"

was stimmt da nicht??
nachrichten werden auch keine übertragen, eig geht nichts...
hm...


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:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active := true;
ClientSocket1.Host := Edit2.Text;
Showmessage('Verbindung aufgebaut');
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
if ClientSocket1.Active then begin
ClientSocket1.Socket.SendText('Client: ' + Edit1.Text);
Memo1.Lines.Add('Client: ' + Edit1.Text);
end;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
ClientSocket1.Active := false;
Application.Terminate;
end;


was mach ich falsch? das war der client, server ähnlich.
danke
mfG

Moderiert von user profile iconChristian S.: Quote- durch Delphi-Tags ersetzt


jaenicke - Do 18.12.08 21:22
Titel: Re: chat programm -- error
Hallo und :welcome: hier bei uns im Forum!

user profile iconsatan hat folgendes geschrieben Zum zitierten Posting springen:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm1.ClientSocket1Connect(Sender: TObject;
  Socket: TCustomWinSocket);
begin
Memo1.Lines.Add(Socket.ReceiveText);
end;
Du verbindest hier doch erst, was willst du an der Stelle denn schon mit ReceiveText? Du hast ja noch gar keinen Text empfangen. ;-)
Dafür gibt es das Ereignis OnRead für das Empfangen von Text.

Schau dir mal dieses Tutorial an, das macht genau was du vor hast und ist sehr gut erklärt:
http://www.delphi-library.de/topic_60744.html


satan - Do 18.12.08 21:29

on read? kenn ich nicht ^^
habe bis jetzt nur konsolenbasiert gecodet...

muss ich eine neue prozedur für das onread ereignis machen?


jaenicke - Do 18.12.08 21:31

Klick auf deinen ClientSocket und schau unter Ereignisse, dort steht das Ereignis. Dann klick dort doppelt auf OnRead.

Aber schau dir doch mal das Tutorial an, dort wird ja erklärt wie die Abläufe sind. Wenn du bisher konsolenbasiert programmiert hast, dann musst du umdenken von sequentiellem Abarbeiten von Befehlen auf ereignisorientiertes Vorgehen.