Tags über Netzwerk?
-
Hi,
ich soll TicTacToe über Netzwerk spielbar machen.
Hab auch schon einige Infos :Client
Die Komponente ClientSocket enthält die Klasse TClientSocket, welche Socket-
Verbindungen für einen TCP/IP-Client verwaltet.
Verbindung zu einem aktiven Server erstellen:
ClientSocket->Port Portadresse des Servers setzen
ClientSocket->Address IP-Adresse des Servers setzen
ClientSocket->Open(); Verbindung öffnen
ClientSocket->Close(); Verbindung beenden
Daten senden:
ClientSocket->Socket->SendText(AnsiString);
Ereignisse:
Empfangen:
OnRead ClientSocket->Socket->ReceiveText() gibt dem empfangenen Text
als String zurück
OnConnect tritt ein, wenn eine Verbindung zum Server aufgebaut wird
OnDisconnect tritt ein, wenn eine Verbindung zum Server gelöst wird
Server
Die Komponente ServerSocket enthält die Klasse TServerSocket, welche Socket-
Verbindungen für einen TCP/IP-Client verwaltet.
Server aktivieren:
ServerSocket->Port Portadresse des Servers setzen
ServerSocket->Open(); Server aktivieren (listen = horchen)
ServerSocket->Close(); alle Verbindungen beenden
Senden:
ServerSocket->Socket->SendText(AnsiString);
Empfangen:
OnClientRead Socket->ReceiveText() gibt dem empfangenen Text als
String zurück
OnClientConnect tritt ein, wenn eine Verbindung zum Server aufgebaut wird
OnClientDisconnect tritt ein, wenn eine Verbindung zum Server gelöst wird
Unter der Eigenschaft Socket können nähere Informationen zur aktuellen Verbindung
ausgelesen werden.
Nähere Informationen finden Sie in der Hilfe unter den Stichworten TServerSocket und
TClientSocket
Brühlwiesenschule Hofheim
Client-Server-Verbindungen Einführende Aufgabe
D:\Daten\C_Kurse\U_Projekte\ClientServer\ClientServer.wpd Seite: 2 von 2
Aufgaben:
1. Setzen Sie je einen Server und einen Client unter Verwendung der Rumpfprojekte
(Server.bpr und Client.bpr) auf. Beginnen Sie mit dem Server. Wenn Sie Port 23
einstellen, können Sie den Server mit dem Telnet-Client( Start->Ausführen telnet
localhost) testen. Beginnen Sie die Codierung des Clients erst, wenn der Server
einwandfrei läuft.
Experimentieren Sie mit den Demoprogrammen und erweitern Sie ihre Anwendung.
2. Erstellen Sie eine Client/Server Projekt für einen Chat-Room: Ein Teilnehmer sendet
an einen Server eine Nachricht. Der Server sendet die Nachricht an alle angemeldeten
Clients zurück.
Möglicher Dialog:
Client 1 sendet: Hallo
Server sendet an alle Clients: Client1: Hallo
Client 2 sendet: Ich bin auch da
Server sendet an alle Clients: Ich bin auch da
usw.
3. Elektronische Wahl über das Netzwerk
Grundidee:
Nach Aufforderung durch einen Client sendet der Server einmalig an den Teilnehmer
eine eindeutige Zahl, vergleichbar mit der TAN-Nummer beim Online-Banking. Am
Client kann nun eine Partei gewählt und mit der TAN-Nummer an den Server gesendet
werden. Der Server zählt die abgegebenen Stimmen und zeigt das Ergebnis in
geeigneter Weise (graphisch oder Text) an.Nur weiss ich nicht wie ich da anfangen soll.
Was muss ich beachten?
thx4help

-
Apf3ls4ft schrieb:
Nur weiss ich nicht wie ich da anfangen soll.
Was muss ich beachten?
thx4help

zB das Beispiel unter \Examples\Internet\Chat
-
Hallo
schau dir das Client/Server-Beispielprogramm in <BCB-Path>\Examples\Internet\Chat an. Desweiteren gibts auch hier im Forum schon einige Threads über TClient/ServerSocket.
Wenn du dann eine konkretere Frage hast, dann bekommst du dann auch konkretere Antworten.
bis bald
akari
-
hat mir sehr geholfen, danke euch

hab jetzt ein Chatprog fertiggestellt, nur muss noch ein Passwort abgefragt werden. Das ist aber kein Problem

ich wollte jetzt aber fragen, wie ich Tags aus meinem Spiel über das netzwerk an ein zweiten Client schicken kann und auch angezeigt wird, wenn sich die Buttons ändern.
hab da im moment kein Einfall

kann ich da einem von euch mein Code schicken und etwas Hilfestellung dazu bekommen?

-
hab auf http://home.arcor.de/apf3lsaft/Client.exe und http://home.arcor.de/apf3lsaft/Server.exe
mein bisheriges Ergebnis
ich muss ja quasi 2 Clients erschaffen, die über ein Server die Daten, also die Tags austauschen, rischtisch? rischtisch!
-
Hallo,
Du könntest ja auch versuchen das in einem programm server UND client eingebaut sind das brauchste nicht mehr 2 programme
P.S mich brauchste dazu dann net fragen hab keine ahnung weiß nur das es geht^^
MFG,
Tomo
-
Ich würde das auch so machen das das Programm sowohl Server als auch client sein kann, du solltest dir dann nur überlegen wie du die Daten verschickst.
Ich habe es mal so gemacht das ich in einen String den ich schicke eine art Briefkopf eingebaut hab, das sah dann so aus:[Socket Absender Nr.]#[Typ der Nachricht]#[Eigentliche Daten]
und anhand der # hab ich den String zerteilt und so die Nachricht ausgewertet.
So kannste dann unterscheiden wer dir was geschickt hat.
-
Hab hier einen "Asynchroner Socket-Fehler"
Ich habe 2 "Aktivieren"- Buttons, die (bei Doppelklick auf die Buttons) sich an der gleichen Stelle im Code befinden. Also da wo
void __fastcall TForm1::btnAktivClick(TObject *Sender)usw steht.
Aber ich hab beiden Buttons unterschiedliche Namen gegeben. Warum verweisen beide gleichzeitig da drauf?
ich hoffe, ihr versteht meinen frage

-
du hast warscheinlich einfach nur die buttons kopiert, du musst mal die onclick methode bei einem aus dem objektinspektor nehem und dann doppelt drauf klicken dann erstellt der eine neue.
-
wenn ich bei einem Button das Onclick-Ereignis umbenenne, wird beim anderen Button das Ereignis auch umbenannt, auch wenn ich die buttons neu anlege...
komisch
-
nicht umbennen bei einem ganz raus löschen und neu doppelklicken, kann jetzt sein das es jetzt anm etwas anderem liegt aber bei mir hat das immer geklappt

-
Das Button-Problem hat nicht wirklich mit dem Versenden von Daten über's Netzwerk zu tun.
Bitte die Faustregel beachten: ein Thema pro Thread, ein Thread pro Thema.
-
habs geschafft

ich probier hier mal noch bisschen was aus, dann komm ich aba bald wieder

-
http://home.arcor.de/apf3lsaft/TicTacToe.exe (es fehlen allerdings die bmp's um das Spiel zu starten, ausser ihr erstellt euch kurzerhand selbst welche = ein "X" in X.bmp und ein "O" in O.bmp)
hier könnt ihr euch ein Eindruck von meinem Programm erschaffen.
erst Server aktivieren, danach den Client
Jetzt ist aber die Frage, wie ich ein Tag von Client zu Client schicken kann und sich auch dementsprechend die Buttons ändern?
Es soll so ablaufen, dass jeder Client die Oberfläche wie oben in der .exe dargestellt ist, zur Verfügung hat.
-
keine ahnung was ich jetzt machen soll

-
ich muss nur auf einen der dynamischen buttons klicken (als ein Spielzug) und dann soll bei einem anderen client dieser Spielzug angezeigt werden. Aber keine ahnung wie ich da anfangen soll, hmmm
-
Hallo
woran fehlt es dir
- an der Verbindung
- an der Idee wie du die Daten weitergibst(azswertest
...Mfg
Klaus
-
hab mein letzten Post editiert. Sollte jetzt bissi klarer sein

Verbindung steht. Nur muss ich jetzt quasi 2 TicTacToe- Clients dazu bringen, gegeneinander zu spielen.
Der erste Client muss quasi die eigenen Tags übersenden und der zweite Client muss diese Tags quasi ausführen.

-
Ich glaube, ich sehe Dein Problem nicht richtig?!
Du willst auswerten was für ein Button gedrückt wurde und dann das ganze übertragen ?
Der Ansatz mit den Tags ist schon der richtige Weg. Wenn der Button gedrückt wurde, generierst Du den Tag und versendest ihn. Der Empfänger nimmt den Tag wieder auseinander.
Z.B. wird links oben ein Kreis gezeichnet
möglicher Tag <1,1,Kreis>Empfänger:
Auswertung der Koordinaten und dann z.B. ein Image mit einem Kreis an der entsprechenden Position anzeigen.
-
genau rostfrei
das ist mein problem
ich weiss jetzt nur nich, wie ich das übersenden kann

Ein Tag sind bei mir die Koordinaten x und y