Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > .NET Languages
You last visited: Today at 14:05

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

Advertisement



C# TCP Client design frage

Discussion on C# TCP Client design frage within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1
 
Atheuz's Avatar
 
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
C# TCP Client design frage

Ich stehe im Moment vor einer Frage, ich habe eine Konsolenanwendung die sich auf einen Server verbindet und je nach antworten des Servers reagiert. Ein clientless bot eben. Allerdings stehe ich vor einem Problem wie ich das ganze nun gestalten soll, ich habe mit der Basis des codes was ich gerade benutze einen ähnlichen Bot erstellt gehabt der das Auktionshaus gecrawled hatte. War mir allerdings irgendwie zu unsicher in der Lauffähigkeit.

Hier mal etwas Pseudocode

PHP Code:
void main()
{
client.connect("blablabla",7777);
while(
true)
{
  
DoEvents(readstream());
}
client.Close();

PHP Code:
DoEvents(networkstream stream)
{
  if(
blablabla regex oder contains)
   {
     
tu das
   
}
  
Hier folgen dann dutzend andere if anweisungen

Mein Problem ist jetzt einfach das ich einen sehr simplen event handler in einer while schleife habe wo ich zum server verbunden bin, und viele if anweisungen in der doevents funktion habe. Ich übergebe also den stream bzw eigentlich nur das letzte packet der funktion welche dann daraufhin antwortet.

Gibt es irgendwelche anderen Wege damit ich so ein Bot leichter gestalten kann? Bin wohl etwas dumm gerade was OOP angeht.
Atheuz is offline  
Old 07/03/2011, 01:24   #2

 
boxxiebabee's Avatar
 
elite*gold: 0
Join Date: May 2008
Posts: 1,222
Received Thanks: 500
Quote:
Originally Posted by Atheuz View Post
Ich stehe im Moment vor einer Frage, ich habe eine Konsolenanwendung die sich auf einen Server verbindet und je nach antworten des Servers reagiert. Ein clientless bot eben. Allerdings stehe ich vor einem Problem wie ich das ganze nun gestalten soll, ich habe mit der Basis des codes was ich gerade benutze einen ähnlichen Bot erstellt gehabt der das Auktionshaus gecrawled hatte. War mir allerdings irgendwie zu unsicher in der Lauffähigkeit.

Hier mal etwas Pseudocode

PHP Code:
void main()
{
client.connect("blablabla",7777);
while(
true)
{
  
DoEvents(readstream());
}
client.Close();

PHP Code:
DoEvents(networkstream stream)
{
  if(
blablabla regex oder contains)
   {
     
tu das
   
}
  
Hier folgen dann dutzend andere if anweisungen

Mein Problem ist jetzt einfach das ich einen sehr simplen event handler in einer while schleife habe wo ich zum server verbunden bin, und viele if anweisungen in der doevents funktion habe. Ich übergebe also den stream bzw eigentlich nur das letzte packet der funktion welche dann daraufhin antwortet.

Gibt es irgendwelche anderen Wege damit ich so ein Bot leichter gestalten kann? Bin wohl etwas dumm gerade was OOP angeht.
such mal in google einfach nach "socket client server codeproject"
boxxiebabee is offline  
Old 07/03/2011, 13:42   #3
 
elite*gold: 115
Join Date: Oct 2007
Posts: 9,390
Received Thanks: 12,345
Ich weiß nicht genau, ob ich dein Problem so richtig verstanden habe.

Ich würde eine seperate Klasse à la "PacketParser" erstellen, mit einer Public-Methode wie "Recv". In deiner Main-Funktion wird diese Funktion dann in der Schleife ständig aufgerufen.

Diese Klasse zerteilt dann die ankommenden Pakete einzeln. Es kommt ja nicht immer genau 1 Paket an, manchmal sind es mehrere und manchmal auch nur der Bruchteil. Das kannst du dann in eine Klasse "Packet" verpacken, in das jedes Paket übersichtlich gespeichert wird (z.B. in Variablen wie "length", "opcode", etc.).

Dieses "Packet"-Objekt kannst du dann wieder an eine weitere Klasse wie "EventHandler" übergeben, die dann darauf reagiert.
ms​ is offline  
Old 07/04/2011, 02:41   #4
 
Atheuz's Avatar
 
elite*gold: 81
Join Date: Jul 2005
Posts: 1,921
Received Thanks: 2,239
Quote:
Originally Posted by Lizzaran View Post
such mal in google einfach nach "socket client server codeproject"
Öhm, der Client ist fertig sowas brauche ich nicht und den GameServer gibt es ja schon.

Quote:
Originally Posted by Disconnect View Post
Ich würde eine seperate Klasse à la "PacketParser" erstellen, mit einer Public-Methode wie "Recv". In deiner Main-Funktion wird diese Funktion dann in der Schleife ständig aufgerufen.
Die Funktion dafür ist 4-6 Zeilen groß, dafür ne Klasse zu erstellen.. hmm.

Quote:
Originally Posted by Disconnect View Post
Diese Klasse zerteilt dann die ankommenden Pakete einzeln. Es kommt ja nicht immer genau 1 Paket an, manchmal sind es mehrere und manchmal auch nur der Bruchteil. Das kannst du dann in eine Klasse "Packet" verpacken, in das jedes Paket übersichtlich gespeichert wird (z.B. in Variablen wie "length", "opcode", etc.).

Dieses "Packet"-Objekt kannst du dann wieder an eine weitere Klasse wie "EventHandler" übergeben, die dann darauf reagiert.
Werde ich dann wohl so machen müssen da mir selber auch keine andere methode einfällt, wollte nur mal fragen was der census hier ist wie ein bot pakete abarbeiten soll.
Atheuz is offline  
Reply


Similar Threads Similar Threads
[Frage]Client Design
02/14/2011 - Metin2 Private Server - 0 Replies
Hey leute ich hab im moment langeweile und hab mir deswegen überlegt ein client design zu machen ... gibt es einen thread der erklärt wie es geht? wenn nicht was muss ich entpacken um es zu verändern und geht des so einfach? mfg LoardOfBoards
[Frage]Metin2 Client Fenster Design
05/10/2010 - Metin2 Private Server - 5 Replies
Hey ich wollt mal fragen wo man das ändern kann : die fenster Designs: http://www.imagebanana.com/img/oi8e0rt9/zeig.png http://www.imagebanana.com/img/8bnjc5ah/zeig2.png und mit welchem programm :D
Frage bezüglich design / Question about Design
12/05/2009 - Atlantica Online - 0 Replies
Hiho guys, i want to create some vid tuts with adobe after effects and the new flash. what i need is, just like WOW, a chars-viewer. do somebody know about this at Atlantica? sry for my english. ^^ ------------------------------------------------- ---------------



All times are GMT +1. The time now is 14:06.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.