AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TcpServer ----> TcpClient senden und empfangen

TcpServer ----> TcpClient senden und empfangen

Ein Thema von jokerfacehro · begonnen am 20. Dez 2006 · letzter Beitrag vom 25. Mai 2011
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
jokerfacehro
(Gast)

n/a Beiträge
 
#1

TcpServer ----> TcpClient senden und empfangen

  Alt 20. Dez 2006, 17:07
Hallo,
ich habe mich seit 2 Tagen mit der Suche von hilfreichen Seitenbeschäftigt und so einiges gefunden.
Darauf hin habe ich es mit WinSocket, TcpClient/TcpServer und IdTcpClient/IdTcpClient probiert.
Ich habe mit TcpClient/Server geschafft, per bmBlocking Daten vom Client an den Server zu senden.
Das Ganze soll ein kleiner Chat werden

per
SendLn('hallo'); vom Client
und das ganze mit
dem
OnAccept auf dem Server abgefangen

alles wunderbar.

will ich jetzt vom Server zum Client senden klappt das nicht.
ich habe mir schon einiges mit mbNonBlocking angeguckt und auch selbst ausprobiert,
doch wenn ich den Client auf NonBlocking stelle empfängt mein server nicht richtig,
ab und zu klappt es, doch meistens kommt garnichts an und ich kriege auch einen socket error.
ich teste das ganze per localhost, sollte ja kein problem sein.


hmmm ich komm nicht drauf...

vielleicht hat jemand eine idee?

hier mein proggi im anhang

Edit: neue version ist weiter unten
Angehängte Dateien
Dateityp: rar tcpconn_170.rar (381,3 KB, 169x aufgerufen)
  Mit Zitat antworten Zitat
jokerfacehro
(Gast)

n/a Beiträge
 
#2

Re: TcpServer ----> TcpClient senden und empfangen

  Alt 20. Dez 2006, 17:44
ich habe einen forumeintrag über client threads gefunden, das ist allerdings für NonBlocking ;/
http://delphi.newswhat.com/geoxml/fo...s.t-online.com

http://delphi.newswhat.com/geoxml/fo...ps.borland.com
  Mit Zitat antworten Zitat
jokerfacehro
(Gast)

n/a Beiträge
 
#3

Re: TcpServer ----> TcpClient senden und empfangen

  Alt 21. Dez 2006, 07:09
ich komm einfach nicht weiter
Kann bitte jemand helfen
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: TcpServer ----> TcpClient senden und empfangen

  Alt 21. Dez 2006, 07:17
moin,

also ich persönlich kann dir dieses tutorial empfehlen es setzt auf die TServerSocket und TClientSocket-Komponenten auf. Da kann mans chon einiges lernen. danach kannst du dich ja mit indy beschäftigen, was weitaus mächtiger ist

grüße (nach rostock?^^)
aeno
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
jokerfacehro
(Gast)

n/a Beiträge
 
#5

Re: TcpServer ----> TcpClient senden und empfangen

  Alt 21. Dez 2006, 07:26
Hey !
danke für den tipp
das winsocket tutorial hab ich mir gestern angesehen und gleichzeitig ein zweites,
ich habe mir einfach das tutorial als testprogramm zusammengestellt und geschaut ob das hinhaut.

und da kamen gleich schöne synchronisations fehler und weiteres obwohl ich den quelltext nur kopiert hatte. da hab ich es denn gleich sein gelassen.

ich habe mit den TTcpClient ---->TTcpServer schon eine verbindung hingekriegt klappt wunderbar
auf, den Client habe ich auf mb Blocking und den Server auf mbThreadBlocking.

ich finde bloß keine lösung für den umgekehrten weg, ich habe es schon mit einem timer im client versucht, einfach abzufragen ob was kommt, ich habe aber immer nur leere zeilen bekommen obwohl der server periodisch an den client was sendet.

es wäre schön das mit TTcpClient + TTcpServer hinzubekommen, da ich damit am weitesten gekommen bin

Schöne Grüße nach Schwerin vom Blumenhund
  Mit Zitat antworten Zitat
jokerfacehro
(Gast)

n/a Beiträge
 
#6

Re: TcpServer ----> TcpClient senden und empfangen

  Alt 21. Dez 2006, 07:32
hier die neuste version meines tcp proggis
Angehängte Dateien
Dateityp: rar tcpconn_203.rar (381,1 KB, 266x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: TcpServer ----> TcpClient senden und empfangen

  Alt 21. Dez 2006, 07:35
also durch das OnAccept bekommst du ja den client als TCustomIpClient übergeben. den kannst du dir für spätere zwecke beispielsweise in einem array ablegen.
wenn du nun was vom server zum client senden willst, musst du lediglich TCustomIpClient.SendLn() aufrufen. am client wird dann OnReceive ausgelöst, welches dir mittels Buf und DataLen die Nachricht übergibt

im grunde ganz simpel. klappt bei mir tadellos.

edit: bei deinem server möchtest du schon im OnAccept den etxt empfangen. funktioniert bastimmt auch. aber besser ist es, auf das OnReceive des TCustomIpClient zu reagieren. denn da musst du nicht mit Receiveln() rumhantieren, sondern bekommst den text schon als pchar. und zwar jedesmal, wenn der client etwas gesendet hat.
und im client brauchst du beim empfang auch nciht ReceiveBuf() nutzen. da kommt dann nämlich etwas leeres raus. deine nachricht steht bei dem ereignis bereits im parameter buf. receivebuf() würde sich die nächste nachricht holen (die aber noch gar nciht geshcickt wurde -> also leer )

aeno
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
jokerfacehro
(Gast)

n/a Beiträge
 
#8

Re: TcpServer ----> TcpClient senden und empfangen

  Alt 21. Dez 2006, 07:47


ich hab die ganze zeit per
TcpServer1.SendLn('string'); versucht was zu schick grrr ^^

jetz mit

ClientSocket.SendLn('string'); hab ich es vorhin ma ganz kurz geschafft das OnrecieveEvent auszulösen.
Aber der Text kam nicht an ^^
ich werde weiter rumprobieren und jetzt noch eine Frage
kann ich dem ClientSocket per Sendln etwas schicken wenn er gerade nicht connected hat ?
oder geht das denn immer nur im OnAccept Event?
  Mit Zitat antworten Zitat
jokerfacehro
(Gast)

n/a Beiträge
 
#9

Re: TcpServer ----> TcpClient senden und empfangen

  Alt 21. Dez 2006, 07:50
du meintest ja noch lieber auf Clientsocket.OnReceive reagieren als of OnAccept des Servers wie krieg ich das hin ? ^^
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

Registriert seit: 7. Mär 2004
Ort: Schwerin
1.089 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: TcpServer ----> TcpClient senden und empfangen

  Alt 21. Dez 2006, 07:55
Zitat von jokerfacehro:
du meintest ja noch lieber auf Clientsocket.OnReceive reagieren als of OnAccept des Servers wie krieg ich das hin ? ^^
schreib dir zuerst eine funktion, die als eventhandler dient:

Delphi-Quellcode:
procedure TForm1.MyReceive(Sender: TObject; Buf: PChar;
  var DataLen: Integer);
begin
  //hier die nachricht ausesen (steck im parameter "Buf"; die länge steht in "DataLen")
end;
dann, beim OnAccept des TcpServer folgendes:

Delphi-Quellcode:
procedure TForm1.TcpServer1Accept(Sender: TObject;
  ClientSocket: TCustomIpClient);
begin
  //...
  ClientSocket.OnReceive := MyReceive;
  //...
end;
damit wird MyReceive aufgerufen, wenn bei dem server eine nachricht des clients ankommt

aeno
Steffen Rieke
Was nicht buzzt, wird buzzend gemacht!
http://blog.base-records.de
http://www.base-records.de
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2020 by Daniel R. Wolf