Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 00:11

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[C++] Diverse Fragen

Discussion on [C++] Diverse Fragen within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1


 
Sayael's Avatar
 
elite*gold: 5
Join Date: Nov 2007
Posts: 16,440
Received Thanks: 3,696
[C++] Diverse Fragen

So, vorab, ich bin nicht so die Leuchte in C++, hoffe aber darauf, dass ihr mir Erleuchtung bringen könnt.

Folgendes, ich habe einen Server erstellt und habe diverse Clients. Nun verbinde ich mich mit den Clients auf den Server, welcher mir in einer ListBox anzeigen soll, welcher Benutzer, Clients müssen sich vorher autorisieren, mit welcher IP mit dem Server verbunden ist.
Wie realisiere ich, dass der Server mir die Clients mit Username und IP anzeigt und ich möglicherweise auch deren Verbindung unterbrechen kann.

2. Problem:
Clients können sich Spiele vom Server ziehen, jeder Client besitzt eine ListBox in der verfügbare Spiele aufgelistet sind. Wie kann man durch Doppelklick in der ListBox das gewünschte Spiel anfordern?

3. Problem:
Wie realisiere ich, wenn mehrere Clients gleichzeitig spielen und nach jeder Runde der Highscore gespeichert wird.
Ich meine mich noch daran zu erinnern, dass es Probleme geben wird wenn mehrere Clients gleichzeitig in die Datenbank schreiben wollen.
Sayael is offline  
Old 04/26/2010, 15:13   #2
 
scbiz's Avatar
 
elite*gold: 196
Join Date: Nov 2005
Posts: 625
Received Thanks: 192
Deine Fragen lassen aber stark vermuten, dass dein bisheriger Erfolg ausschließlich auf Copy&Paste basiert. Wie wäre es wenn du ein wenig des Quelltexts offenlegst?
scbiz is offline  
Old 04/26/2010, 16:28   #3


 
Sayael's Avatar
 
elite*gold: 5
Join Date: Nov 2007
Posts: 16,440
Received Thanks: 3,696
Nein, mein bisheriger Erfolg basiert nicht auf C&P.

Client, heutiger Stand:
Code:
//$$---- Formular-CPP ----
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "uProjekt.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMain2 *frmMain2;
//---------------------------------------------------------------------------
__fastcall TfrmMain2::TfrmMain2(TComponent* Owner)
	: TForm(Owner)
{

sgSpiele->Cells [0][0] = "Punktestand" ;
sgSpiele->Cells [1][0] = "Spielername" ;
sgSpiele->Cells [2][0] = "Datum" ;
//sgSpiele->Cells [3][0] = "Highscore" ;
//sgSpiele->Cells [4][0] = "Datum" ;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMain2::btnZeigenClick(TObject *Sender)
 {
  tblHighscore->ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Spieler.mdb;User Id=admin;Password=;";
  tblHighscore->TableName = "tblHighscore";

 tblHighscore->Active = true;
  sgSpiele->RowCount = 2;

  int anz=0;
  tblHighscore->First();

  while(!tblHighscore->Eof) {
	anz++;
	tblHighscore->Next();
  }


  tblHighscore->First();
  for(int i=1; !tblHighscore->Eof; i++) {
	sgSpiele->Cells[0][i] =  tblHighscore->FieldByName("Punktzahl")->AsString;
	sgSpiele->Cells[1][i] =  tblHighscore->FieldByName("Username")->AsString;
	sgSpiele->Cells[2][i] =  tblHighscore->FieldByName("Datum")->AsString;

	tblHighscore->Next();
	sgSpiele->RowCount++;
  }
    tblHighscore->Active = false ;

 }
//---------------------------------------------------------------------------

void __fastcall TfrmMain2::btnVerbindenClick(TObject *Sender)
{
  cs->Address = edtServerIP->Text;
  cs->Port = StrToInt(edtPort->Text);
  cs->Active = true;
  btnVerbinden->Enabled = false;
  btnTrennen->Enabled = true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain2::btnTrennenClick(TObject *Sender)
{
  cs->Active = false;
  btnVerbinden->Enabled = true;
  btnTrennen->Enabled = false;
}
//---------------------------------------------------------------------------

void __fastcall TfrmMain2::csConnect(TObject *Sender, TCustomWinSocket *Socket)
{
  ShowMessage("Verbindung steht");
}
//---------------------------------------------------------------------------


void __fastcall TfrmMain2::btnStatusClick(TObject *Sender)
{
if (btnVerbinden->Enabled == false) {
  pnlStatus->Caption = "Online";
  pnlStatus->Color = clLime;
}
else if (btnVerbinden->Enabled == true) {
  pnlStatus->Caption = "Offline";
  pnlStatus->Color = clRed;
}
}
//---------------------------------------------------------------------------
Server heutiger Stand:
Code:
//$$---- Formular-CPP ----
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnStartenClick(TObject *Sender)
{
  ServerSocket->Port = edtPort->Text.ToInt();
  ServerSocket->Active = true;
  btnStarten->Enabled = false;
  btnStop->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnStopClick(TObject *Sender)
{
  ServerSocket->Active = false;
  btnStarten->Enabled = true;
  btnStop->Enabled = false;

  btnStatus(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnStatusClick(TObject *Sender)
{
if (btnStarten->Enabled == false) {
  pnlStatus->Caption = "Online";
  pnlStatus->Color = clLime;
}
else if (btnStarten->Enabled == true) {
  pnlStatus->Caption = "Offline";
  pnlStatus->Color = clRed;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnAktuClick(TObject *Sender)
{
  lbSpieler->Clear();
  tblSpieler->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbSpiel.mdb;User Id=admin;Password=;";
  tblSpieler->TableName = "tblBenutzer";
  tblSpieler->Active = true;
  tblSpieler->First();
  AnsiString ausgabe;
  while (tblSpieler->Eof==false) {
	for (int i=0; i<tblSpieler->FieldCount; i++) {
	  ausgabe = ausgabe + tblSpieler->Fields->Fields[i]->AsString+" ";
	}
	lbSpieler->Items->Add(ausgabe);
	ausgabe="";
	tblSpieler->Next();
  }
  tblSpieler->Active = false;	
}
//---------------------------------------------------------------------------
Sayael is offline  
Old 04/26/2010, 18:28   #4
 
xNopex's Avatar
 
elite*gold: 0
Join Date: May 2009
Posts: 827
Received Thanks: 471
Quote:
2. Problem:
Clients können sich Spiele vom Server ziehen, jeder Client besitzt eine ListBox in der verfügbare Spiele aufgelistet sind. Wie kann man durch Doppelklick in der ListBox das gewünschte Spiel anfordern?
Auch die VCL sollte über eine Art Event-System verfügen. Hab ein bisschen Google verwendet und bin gestoßen. Habs kurz überflogen, vllt. hilfts dir ja. Wenn nicht, dann steig doch auf z.B. QT oder WxWidgets um. Für TCP/UDP/.. empfiehlt sich vllt. auch boost::asio.

Quote:
3. Problem:
Wie realisiere ich, wenn mehrere Clients gleichzeitig spielen und nach jeder Runde der Highscore gespeichert wird.
Ich meine mich noch daran zu erinnern, dass es Probleme geben wird wenn mehrere Clients gleichzeitig in die Datenbank schreiben wollen.
Du lässt deinen Server die DB schreiben..
xNopex is offline  
Thanks
1 User
Old 04/27/2010, 15:39   #5


 
Sayael's Avatar
 
elite*gold: 5
Join Date: Nov 2007
Posts: 16,440
Received Thanks: 3,696
Dank dir und jetzt nochmal hierzu bitte was halbwegs verständliches/logisches

Quote:
Wie realisiere ich, dass der Server mir die Clients mit Username und IP anzeigt und ich möglicherweise auch deren Verbindung unterbrechen kann.
Sayael is offline  
Old 04/29/2010, 01:52   #6

 
elite*gold: 150
Join Date: Apr 2007
Posts: 2,394
Received Thanks: 6,644




Die Daten dann natürlich vom Client aus dem Server schicken.
Wegen listbox...kommt halt auch drauf an was du
für den GUI benutzt. Zum disconnecten, könntest du halt
die Sockets den Usern zuweisen ( die Daten bekommst du ja
vom client ) und dann den Socket schliessen ( socketname.close() ).
Den Client vorher eventuell den Disconnect mit einer Nachricht mitteilen ^^
wurstbrot123 is offline  
Old 04/29/2010, 11:30   #7
 
elite*gold: 0
Join Date: May 2008
Posts: 489
Received Thanks: 210
Du zeigst und ja nicht 'mal von welchem Typ deine ganzen spaßigen Objekte da sind. Wie soll ich denn da auch nur irgendeine Information entnehmen?
schlurmann is offline  
Reply


Similar Threads Similar Threads
hii diverse fragen zu spielen obs bot´s gibt
01/10/2011 - Browsergames - 3 Replies
suche bot´s für shaks and figdet wurzelimperium bundeskampf kiezking oder andere coole spiele
Diverse Fragen
04/14/2010 - Aion - 3 Replies
hi ich bin ganz neu in dieser section^^ mia war lw da hab ich ein bisschen gesucht und mich daran erinnert das mein kumpel mal aion gezockt hat... doch da das ja kostet dacht ich mia geh ich auf einen p server^^ jetzt meine frage: was muss ich für den anfang über aion wissen? welcher p server ist gut? sollte keine laggs haben und keine übertrieben rates freue mich auf antworten :D:D:D
Diverse Betavideos!
08/20/2008 - General Gaming Discussion - 0 Replies
Endlich ist der Zeitpunkt gekommen, die NDA ist gefallen :) Da in den nächsten Tagen massig Infos aus der Beta den Weg ans Tageslicht finden, werde ich in diesem Thread gelegentlich Links zu ein paar Videos aus der Beta einstellen. Viel Spaß beim anschauen! An Emporers Order Altdorf Movie 1. Buffed WAR-Beta-Show
Soviel zum Glider :P und diverse andere Fragen
05/14/2007 - WoW Bots - 27 Replies
http://yro.slashdot.org/article.pl?sid=07/...12421 8&from=rss Schaut euch das mal an... ich bin mal gespannt was da raus kommt... Und jetzt noch ne Frage ihr meint ja zum teil man soll diesen bbot oder so benutzen. Kann man den auch per Elv bezahlen oder ist das nicht möglich? Und was ich noch fragen wollte beim FAQ bei Glider sagen die das man einen 72



All times are GMT +1. The time now is 00:13.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.