Autor Beitrag
roka6803
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50


Delphi 5 Ent. & Delphi 7
BeitragVerfasst: Fr 23.09.05 16:05 
Hallo alle zusammen,

ich habe eine (bzw. mehrere) Frage(n) bezüglich der Socket-Komponenten in Delphi 5.

Momentan sind wir (also "meine" Gruppe) dabei ein in den Regeln vereinfachte, netzwerkfähige Variante des Kartenspiels Black Jack zu programmieren - wir versuchen es zumindest.

Jetzt geht es darum relevante "Spieldaten" vom Server zu den Clienten und zurück, zu senden und zu empfangen. Mit Daten sind Dinge wie Punktestand der einzelnen Spieler gemeint oder auch das Ergebnis des "Random"-Prozesses beim ziehen einer Karte. "Im" Server wird also zufällig ein Index generiert, welcher einer Karte entspricht. Dieser soll dann an den entsprechenden Clienten von dem der "Auslösebefehl" kam zurückgesendet werden und dort in eine "Karte" bzw. deren Punktwert umgesetz werden.

Jetzt stellt sich uns die Frage: Wie kann man das mit Socket-Komponenten realisieren ?

Besteht die Möglichkeit einen gesendeten String mit einer Art Index zu versehen der die "Befehlsart" festlegt ? (Diese verschiedenen Befehlsarten könnten ja in einem "zentral" (eigene Unit) angelegten Array definiert sein. Entsprechend dem "Befehlsindex" wird die spezifische Prozedur ausgeführt)

Ich hoffe ich habe mich halbwegs verständlich ausgedrückt.

Freue mich über jede Resonanz !!!!

MfG, GtA roka6803

P.S.: Indy........hab ich momentan NOCH keine Ahnung von

_________________
Signatur? Was ist das? Brauch ich nicht...
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Fr 23.09.05 16:09 
user profile iconroka6803 hat folgendes geschrieben:
Indy........hab ich momentan NOCH keine Ahnung von


Tja, dann würde ich dir empfehlen, dich damit zu beschäftigen. Gibt haufenweise Tutorials dazu; auch hier im Forum wirst du einiges dazu finden...

AXMD
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Fr 23.09.05 16:47 
hier in der OpenSource Units Sparte, gibt es sogar eine Kpselung von den INDYs, die speziell darauf ausgelegt ist, online spiele zu proggen !

_________________
In the beginning was the word.
And the word was content-type: text/plain.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10185
Erhaltene Danke: 1261

W11x64
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Fr 23.09.05 18:02 
Moin!

Mach doch mal eins von den zahllosen Chat-Tuts mit. Danach sollte dir klar werden, wie das abläuft. Aber eine Warnung gleich am Rande: bitte bitte direkt alles ignorieren, was mit dem unmittelbaren Versenden von Records zu tun hat... :wink:

cu
Narses
TM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 74

Win xp
D7 ET
BeitragVerfasst: Fr 23.09.05 19:31 
Kannst du einen Chat programmiern? Egal ob Indy oder Socket.

Wenn nein,
dann such dir ein Tutorial
sonst
Mach doch einen Chat, bei dem der Computer festgelegte Texte/Befehle verschickt und auch selbstständig drauf reagiert.

Also im OnReceive...
ausblenden Delphi-Quelltext
1:
2:
3:
case receivetext of
 '123': ...
 '456': ...

Bei meinem Netzwerk-UNO funktioniert das ohne Probleme (mit Sockets).

..

_________________
Dieser Beitrag enthält keine Schreibfehler.
Das sind versteckte Hinweise.
roka6803 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50


Delphi 5 Ent. & Delphi 7
BeitragVerfasst: Sa 24.09.05 00:12 
Hey, das finde ich ne gute Idee, das mit den vorgefertigten bzw. fest definierten Texten !!!!

Indy, ja,.... damit sollte ich mich wohl mal beschäftigen !!!!

_________________
Signatur? Was ist das? Brauch ich nicht...
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 24.09.05 01:40 
von indy würde ich abraten, die kompos sind total verbuggt.
beispielsweise erzeugt die idHttp komponente, die bei D7 dabei ist, ein speicherleck sobald man sie nur auf das formular zieht.
da würde ich dann doch eher zu tserversocket/tclientsocket raten.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.09.05 01:50 
user profile iconretnyg hat folgendes geschrieben:
von indy würde ich abraten, die kompos sind total verbuggt.

Dann frage ich mich allerdings, warum sie zu den am meist verbreiteten Internet-Komponenten-Sammlungen gehören, wenn sie angeblich so schlecht sein sollen.
ripper8472
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 114

Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)

BeitragVerfasst: Sa 24.09.05 02:00 
also unter c arbeiten wir mit sockets.
wir muessen uns nicht mit "sendstring" pseudo-einfachem kram oder socketklassen rumschlagen.
das geht dann in etwa so:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
// ein paar variablendefinitionen
int sock;
struct sockaddr_in dest_addr;
memset(&dest_addr, 0, sizeof(dest_addr));

// wo wollen wir hinverbinden
dest_addr.sin_family = AF_INET;
dest_addr.sin_port   = htons(12345); // irgendein port
dest_addr.sin_addr   = inet_addr("127.0.0.1"); // die IP

// socket erstellen
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

// verbinden
connect(sock, (struct sockaddr*)&dest_addr, sizeof(struct sockaddr));

// send() und recv(), um rohe bytestroeme zu bekommen
// die daten kommen in "array of byte" (ist das delphiequivalent von dem, was in c benutzt wird)

// verbindung schliessen, der socket ist jetzt wertlos
closesocket(sock);


ich wuerde vorschlagen, entwickelt erstmal ein protokoll fuer die kommunikation zwischen client und server.


Zuletzt bearbeitet von ripper8472 am Sa 24.09.05 02:02, insgesamt 1-mal bearbeitet
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 24.09.05 02:02 
user profile iconLuckie hat folgendes geschrieben:

Dann frage ich mich allerdings, warum sie zu den am meist verbreiteten Internet-Komponenten-Sammlungen gehören, wenn sie angeblich so schlecht sein sollen.


das frage ich mich auch. liegt wohl an deren umfang. wodurch wohl auch folgende probleme entstehen
- speicherfehler
- alle fehler führen zu exceptions, die einen beim debuggen und in multithreaded programmen zur weissglut treiben
- exe wird um 80 kb aufgebläht
dies bezieht sich übrigens alles auf die idHttp komponente, welche ich ausgiebig verwendet habe (siehe meine hp, wo auch eine bessere http unit verfügbar ist)

edit: @ripper, den code kannst du so auch direkt in delphi einsetzen, handelt sich ja nur um api-aufrufe

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
ripper8472
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 114

Win2k (und wenn ich nen Zweitrechner haette, auch eine Linux Distri)

BeitragVerfasst: Sa 24.09.05 02:07 
wenns denn direkt so funktioniert, frag ich mich, wieso sich so viele mit INDY rumquaelen...
ja ok, INDY bietet ziemlich viel nuetzliches, aber fuer einfache tcp verbindungen ist das codebloat.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.09.05 02:08 
user profile iconretnyg hat folgendes geschrieben:
das frage ich mich auch. liegt wohl an deren umfang. wodurch wohl auch folgende probleme entstehen

Dann sollte man das den Entwicklern mal melden.
Zitat:

- exe wird um 80 kb aufgebläht

Das ist ja nun wirklich vernachlässigbar.
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 24.09.05 02:18 
user profile iconripper8472 hat folgendes geschrieben:
wenns denn direkt so funktioniert, frag ich mich, wieso sich so viele mit INDY rumquaelen...
ja ok, INDY bietet ziemlich viel nuetzliches, aber fuer einfache tcp verbindungen ist das codebloat.

indy ist halt auch relativ einfach zu bedienen. um mit den apibefehlen arbeiten zu können muss man sich zumindest mit pointern und den verschiedenen datentypen gut auskennen.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Sa 24.09.05 02:23 
user profile iconLuckie hat folgendes geschrieben:
user profile iconretnyg hat folgendes geschrieben:
das frage ich mich auch. liegt wohl an deren umfang. wodurch wohl auch folgende probleme entstehen

Dann sollte man das den Entwicklern mal melden.

dann fixen die das in der nächsten version, und wenn ich die installiere habe ich wieder das problem dass ich meine alten programme nicht mehr kompilieren kann, weil die wieder 20 methoden weggekürzt und dafür 30 neue eingeführt haben.
drum finger weg von der kompo.
user profile iconLuckie hat folgendes geschrieben:
Zitat:

- exe wird um 80 kb aufgebläht

Das ist ja nun wirklich vernachlässigbar.

da bin ich anderer meinung. bei dieser aussage frage ich mich wirklich, wozu sich auf deiner seite non-vcl tutorials befinden.

_________________
es gibt leute, die sind genetisch nicht zum programmieren geschaffen.
in der regel haben diese leute die regel...
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 24.09.05 03:08 
user profile iconretnyg hat folgendes geschrieben:

user profile iconLuckie hat folgendes geschrieben:
Zitat:

- exe wird um 80 kb aufgebläht

Das ist ja nun wirklich vernachlässigbar.

da bin ich anderer meinung. bei dieser aussage frage ich mich wirklich, wozu sich auf deiner seite non-vcl tutorials befinden.

Die angesprochenen Tutorials erfüllen auch einen anderen Zweck außer möglichst kleine Exe-Dateien zu erreichen. Sie zeigen wie es hinter den Kulissen der VCL aussieht und wie Windows richtig funktioniert. Sie tragen also zu der Funktionweise und dem Verständnis bei wie Windows eigentlich funktioniert. Jemand der sich nur mit der VCL beschäftigt wird nie etwas von einer Fensterprozedur oder einer Nachrichtenschleife gehört haben, was aber, so denke ich, essentielle ist für das Verständnis. Dass dabei relativ kleine Exe-Dateien rauskommen, ist eigentlich nur ein ganz netter Nebeneffekt.

Alles weitere sollten wir per PN klären. Oder du machst ein eigenes Topic auf über den (Un)sinn der nonVL Programmierung.