Autor Beitrag
Spurius
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Do 06.11.03 14:35 
Hallo

kann mir vielleicht einer den Gebrauch von tcpserver/client erklären? Weil aus der hilfe bin ich nicht so schlau geworden :oops:

Ich will damit einen Netzwerkchat proggen. Also bräuchte ich folgendes:
- wie connecte ich?
- wie empfange ich?
- grundeinstellungen etc. ...

MfG
Spurius


Zuletzt bearbeitet von Spurius am Do 06.11.03 20:35, insgesamt 1-mal bearbeitet
ShadowThief
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 278



BeitragVerfasst: Do 06.11.03 16:02 
is nicht schwer, einfach im server einen localport einstellen, z. B. 1234 und dann active auf true setzen, dann läuft der server. beim client dann remotehost (die ip oder der rechnername im netzwerk auf dem der server läuft) und remoteport (1234) einstellen und die methode connect aufrufen.

shadow.

Moderiert von user profile iconTino: Überflüssige Absätze entfernt.

_________________
"soylent grün ist menschenfleisch!"
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Do 06.11.03 16:57 
Also, ich hab jetzt ein programm server und eines client.
aber was die schreiben wird nur bei denen angezeigt.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure TForm1.FormCreate(Sender: TObject);
begin
 tcpserver1.Active := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 tcpserver1.Sendln('hallo client');
 memo1.lines.Add('hallo');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 tcpserver1.Active := false;
 tcpserver1.Free;
end;

des ist der server
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.FormCreate(Sender: TObject);
begin
 tcpclient1.Active := true;
 tcpclient1.RemoteHost := ('localhost');
 tcpclient1.RemotePort :=('2222');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 tcpclient1.Sendln('hallo server');
 memo1.lines.add('hallo server');
end;

und des der client. Die nachrichten will ich mit sendln senden. Also warum kommt da nix an?

MfG
Spurius

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Fr 07.11.03 10:53 
Das gefällt mir! Beide quasseln und keiner hört zu. Dir fehlen die Empfangsroutinen. Sieh mal in der Onlinehilfe bei den Events nach. Da sollte eins für den Empfang dabei sein.

barfuesser
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Fr 07.11.03 15:10 
Hi,
es gibt reciveln().
Aber was kommt da in die klammer?
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Fr 07.11.03 15:31 
Nochmal, was kommt in den Parameter und wo muss das stehen? in einem Timer oder was?
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Fr 07.11.03 15:45 
Mensch ist da jemand ungeduldig! :twisted: Versuch es mal mit nichts, also
ausblenden Delphi-Quelltext
1:
line := receiveln;					

aber eigentlich steht das alles in der OH.

barfuesser
Sorryman
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Fr 07.11.03 15:55 
Es gibt sogenannte Events oder zu Deutsch Ereignisse! Beim OnExecute ereignis des Servers zum Beispiel kannst du die Nachricht empfangen die du mit einem Client sendest...
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Fr 07.11.03 16:11 
also, sorry wen ich mich etwas dumm anstelle, aber ich bin programmier noch nicht so gut.
das OnExecute ereignis, wie kann ich da benutzen? wenn ich die kompo tcpserver anklicke, steht das da nicht dabei. in der hilfe gibt es auch ein onReceive ereignis, aber wie kann ich die benutzen? die stehen nicht im objektinspector. am besten wär ein bsp. mit quellcode :D
MfG
Spurius
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Fr 07.11.03 16:15 
Für den Anfang ist es wohl das einfachste, wenn Du das OnConnect-Ereignis nimmst und mit receiveln solange vom Socket liest, wie Du Daten erhältst. Mit einem receiveln erhältst Du genau die Daten, die Du mit einem sendln abgeschickt hast.

[edit]Und vergiß nicht die Nutzung von WaitForData![/edit]

barfuesser
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Fr 07.11.03 16:27 
Hi,
@barfuesser
danke für deine Antworten, aber ich krieg des net hin. in den demos wird das über threads gelöst, aber das ist ja noch komplizierter. Könntest du mir vielleicht ein Bsp.programm schicken? Dann bestände vielleicht die chance, dass ich des irgendwie checke :oops:
wäre echt sehr nett von dir!
MfG
Inselveteran
mrmustermann@gmx.de
barfuesser
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 324



BeitragVerfasst: Fr 07.11.03 16:34 
Ich kann mal nachher zu Hause gucken, ob ich noch irgendwo ein altes Programm habe. Mit diesen Kompos habe ich nämlich schon seit Jahren nichts mehr gemacht. Aber da Du D7 hast, solltest Du Dir vielleicht mal die Indy-Komponenten ansehen (Suche in: Delphi-Forum, Delphi-Library TIDTCPSERVER und Suche in: Delphi-Forum, Delphi-Library TIDTCPCLIENT).

barfuesser
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Fr 07.11.03 18:51 
Hallo,
die Indy-Kompos scheinen ja die modernere Lösung zu sein. Könntest du mir da ein Bsp. schreiben. einen einfachen chat ohne extras, nur damit ich mal das prinzip verstehe :D
Wenn ja, schicks bitte an meine mail
Oder poste den code hier
MfG
Inselveteran
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Sa 08.11.03 14:11 
Bei den Indy TCPClient und TCPServer Kompos wirst du net um threads rumkommen (beim server schon, beim client net!)... also guck dir mal das hier an: www.pergolesi.demon....rog/threads/ToC.html Das is n super thread-tut :)

es is so:
der client connected zum server
-> beim server wird onConnect ausgeführt
-> der client schickt irgendwas
-> beim server wird OnExecute ausgelöst. Hier kannst du nu n(ohne threads) die Message bearbeiten, was du halt mit ihr tun möchtest
-> ...


wenn der server aber ws an den client schicken will, dann muss bei client ein Threrad laufen, der ständig überprüft, ob der Server was geschickt hat, da es beim Client kein entsprechendes Ereignis (irgendwas mit OnServerWrite oder so) gibt. Also musst du das mit Threads machen... is sowieso besser ;)



MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Sa 08.11.03 16:05 
Hi,
wie connected der client? was kommt in den parameter rein?
was muss alles beim server stehen ausser server.active?

@MrSaint
das mit den Threads scheint ja ein bisschen kompliziert zu sein :shock:

MfG
Spurius
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Sa 08.11.03 16:09 
Connect des Clients:

ausblenden Quelltext
1:
2:
3:
IdTCPClient1.Host:='[IP des Servers]';
IdTCPClient1.Port:=[Port des Servers];
IdTCPClient1.Connect;



beim server muss nix außer IdTCPServer1.Active stehen. Die engegenagenen Nachrichten kannst du dann im OnExecute Ereignis lesen (k.A. wie du das machst... evtl. per IdTCPServer1.ReadLn; )

Das mit den Thread shat mich auch lange Zeit abgeschreckt, is aber wirklich ne tolle sache ;)


MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Sa 08.11.03 16:33 
Hallo, danke für die schnelle hilfe, aber es klappt immer noch nicht. ich habe server auf active, und defaultport festgelegt.
beim client hab ich client.host auf localhost, port gleich wie server und client.connect.
und dann kommt die meldung host nocht gefunden. error 11001
wenn ich als host 127.0.0.1 angebe kommt auch error 11001
kannst du mir vielleicht ein ganz simples bsp. prog hier posten oder per email schicken? :D
MfG
Spurius
MrSaint
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1033
Erhaltene Danke: 1

WinXP Pro SP2
Delphi 6 Prof.
BeitragVerfasst: Sa 08.11.03 16:35 
guck dir die Indy Demo an... aber so wie du das gerade beschreibst, müsste das eigentlich funzen :?!?:


MrSaint

_________________
"people knew how to write small, efficient programs [...], a skill that has subsequently been lost"
Andrew S. Tanenbaum - Modern Operating Systems
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Sa 08.11.03 18:22 
Hallo, also ich hab mir auch nochmal die indy-demos angeschaut, aber des geht einfach net.
@MrSaint könntest du mit vielleicht dich ein ganz simples programm schicken oder hier posten. ein bsp. für den server und eines für den client.
Das wäre echt sehr nett!
Weil ich hätt gern mal ein erfolgserlebnis und dass ich seh, dass es doch irgendwie geht.
Also ich würd mich freuen!
MfG
Spurius
Spurius Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 142

Win XP Home
D3 Prof, D7 Prof
BeitragVerfasst: Sa 08.11.03 18:30 
Es geht!!!!!!!!!!!!!!!!!!!!!!!!!!! :D :D :D
ich hab port und host im objectinspector und nicht im editor eingestellt und jetzt geht es!!!!
MfG
Spurius