AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Frage zu ServerSocketClientRead
Thema durchsuchen
Ansicht
Themen-Optionen

Frage zu ServerSocketClientRead

Ein Thema von Kenshin · begonnen am 22. Jun 2006 · letzter Beitrag vom 23. Jun 2006
Antwort Antwort
Kenshin

Registriert seit: 23. Dez 2005
8 Beiträge
 
#1

Frage zu ServerSocketClientRead

  Alt 22. Jun 2006, 23:09
ich habe eine frage wie man folgendes bewerkstelligt..

also

der client verschickt erstmal normal text an den server

mit dem ereignis schreibt der server den erhaltenen text in ein memo...
Delphi-Quellcode:
procedure TfrmServer.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
  Memo1.Lines.Add(Socket.ReceiveText);
end;
schön und gut..

wenn ich danach aber zum bsp ein record versende..oder sonstwas..

wie soll der server das denn empfangen..wenn im clientread ereignis ja schon steht das er das erhaltene in ein memo schreiben will

oder noch besser..

man verschickt 2 records..nacheinander..einmal...spieler1,dann spieler2 mit jew..bestimmten eigenschaften

wie macht man nun im dem clientread ereignis das soo
das beim server..die records.. dort auch in spieler1 und spieler2 geschrieben werden..
das muss dann ja irgendwie eine reihenfolge haben..

im klartext:

wenn der client records verschickt... spieler1,spieler2....strassen(40 teile grosses array vom typ eines records)
wie mache ich das dan so..das der server im clientread ereignis diese records in seine eigenen spieler1,spieler2 records reinschreibt

also deplhi code mässig würde das so aussehen..

Delphi-Quellcode:
ClientSocket1.Socket.Sendbuf(spieler1,sizeof(spieler1));
        ClientSocket1.Socket.Sendbuf(spieler2,sizeof(spieler2));
        ClientSocket1.Socket.Sendbuf(strassen,sizeof(strassen));
Delphi-Quellcode:
procedure TfrmServer.ServerSocketClientRead(Sender: TObject; Socket: TCustomWinSocket);
begin
  ??
end;
und das ganze muss ja während der laufzeit bei jedem zug gemacht werden...und das sind nur die records..es müssen ja noch viele andre daten versendet werden..

hilfe ^^
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: Frage zu ServerSocketClientRead

  Alt 23. Jun 2006, 00:16
Grundlegend: Du brauchst ein Protokoll. Du musst dir ein Protokoll ausdenken damit du die Daten unterscheiden kannst und somit immer weisst was als nächstes kommt bzw. wie du die Daten zu handeln hast. Dabei ist u.a. auch wichtig zu wissen wie lang ein solcher Datenblock ist zum abtrennen der Blöcke. Da kannst du aber deiner Fantasie freien Lauf lassen.
  Mit Zitat antworten Zitat
Kenshin

Registriert seit: 23. Dez 2005
8 Beiträge
 
#3

Re: Frage zu ServerSocketClientRead

  Alt 23. Jun 2006, 10:55
dann werd ich mich wohl mit dem thema protokolle befassen müssen..

danke
  Mit Zitat antworten Zitat
pacman1986

Registriert seit: 11. Feb 2005
Ort: Kirchhain
498 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Frage zu ServerSocketClientRead

  Alt 23. Jun 2006, 10:59
es gibt noch die primitive möglichkeit alles in ein weiteren record zu packen und zu verschicken.
Christian N.
Designed to make a difference

najjaronline.de
  Mit Zitat antworten Zitat
Kenshin

Registriert seit: 23. Dez 2005
8 Beiträge
 
#5

Re: Frage zu ServerSocketClientRead

  Alt 23. Jun 2006, 11:03
Zitat von pacman1986:
es gibt noch die primitive möglichkeit alles in ein weiteren record zu packen und zu verschicken.
*gg* ^^ das wäre natürlich auch eije möglichkeit
ich versuch aber erst mal elegant ^^wenn ich das nicht hinkriege werd ichs so machen ^^

@ mützel..weisst du irgendwo ein tutorial..oder irgendwas wo man sich das mit den protokoll ansehen kann..an einem bsp
  Mit Zitat antworten Zitat
Tommy

Registriert seit: 14. Jun 2006
Ort: chemnitz
20 Beiträge
 
#6

Re: Frage zu ServerSocketClientRead

  Alt 23. Jun 2006, 16:38
"oder irgendwas wo man sich das mit den protokoll ansehen kann"
du denkst dir einfach eins aus?!

sendest halt erst nen Text + Größe des Records, z.Bsp.:
Delphi-Quellcode:
ClientSocket1.SendText('1 ' + sizeof(recordzeugs)); //1 für Spieler, sizeof() für die Länge
ClientSocket1.SendBuffer(recordzeugs, sizeof(recordzeugs));
und das liest du halt mit dem anderen aus - die Länge hab ich nur, damit du weist, wie viel dazugehört...
(bei Non-Blocking können Nachrichten ja auch zerstückselt oder zusammen mit anderen kommen...)

so in etwa müsste das hinhauen?!

Weiß nicht, ob es so toll ist, das alles in ein Record zu hauen, kommt drauf an, wie groß die Records sind - wenn eins nur nen paar Byte ist, ist das vll so gar besser, aber bei nen paar KB oder MB (^^) solltest du es vll unterlassen, jedesmal wieder alles neuzusenden, wenn es auch die Hälfte tun würde... ^^

Ciao Tom
C++ != D

  Mit Zitat antworten Zitat
Antwort Antwort


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 05:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz