Register for your free account! | Forgot your password?

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

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

Advertisement



Netzwerkprogrammierung [SERVER]

Discussion on Netzwerkprogrammierung [SERVER] within the .NET Languages forum part of the Coders Den category.

Reply
 
Old   #1

 
Nanoxx™'s Avatar
 
elite*gold: 15
Join Date: Feb 2013
Posts: 2,880
Received Thanks: 465
Netzwerkprogrammierung [SERVER]

Hallo,


Da ich schon seit einiger zeit mit .Net (VB, C#) und Unity3D Arbeite habe ich mich mal an ein kleines (großes) Projekt gesetzt und dachte an ein kleines MMO(wenn man es denn so nennen darf)....

Leider habe ich wenig Erfahrung bzw. wenig Kenntnisse über die 'Richtigkeit' / Performance der Netzwerkprogrammierung.


Ich beschreibe es einfach mal...

-> SERVER WIRD NICHT IN UNITY PROGRAMMIERT (VS13 -- C#) //Info da viele es anders machen (was bei entsprechendem spiel sinn machen würde)
Nummer 1:
PHP Code:
StreamWriter.WriteLine("HierBinIch!"); 
Nummer 2:
PHP Code:
BinaryFormatter;
MemoryStream;
byte[]buffer = new byte[blabla]; 
Zusatz Info:
Jeder Client hat eigenen Thread mit
Username, Passhash, Position, Aussehen etc (Was sich während des spiel verändern kann)

In jedem 'Loop' werden die Daten an jeden Spieler geschickt

was ist besser? was ist schneller? gibt's was schnelleres?

Optional:
Meldet sich hier jemand freiwillig und hat ein bisschen zeit mit mir via TS3 zu reden und mich nen bisschen zu beraten?
Nanoxx™ is offline  
Old 07/10/2015, 10:00   #2
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Jeder Client hat einen eigenen Thread? Das ist ja mal richtig exklusiv. Pass bloß auf das bei 1000 Spielern dein Server nicht abstürzt.

Sinvoller wäre es für die Clients einen einzigen Thread zu erstellen wo du in einem SocketArray jeden Client abspeicherst und das Array nach neuen Daten iterierst.

Natürlich sollte dabei ein Client den Rest nicht blocken also verarbeite die Daten dann asynchron, damit die anderen Clienten davon nicht benachteiligt werden.
alpines is offline  
Thanks
1 User
Old 07/10/2015, 11:00   #3

 
Nanoxx™'s Avatar
 
elite*gold: 15
Join Date: Feb 2013
Posts: 2,880
Received Thanks: 465
Quote:
Originally Posted by alpines View Post
Jeder Client hat einen eigenen Thread? Das ist ja mal richtig exklusiv. Pass bloß auf das bei 1000 Spielern dein Server nicht abstürzt.

Sinvoller wäre es für die Clients einen einzigen Thread zu erstellen wo du in einem SocketArray jeden Client abspeicherst und das Array nach neuen Daten iterierst.

Natürlich sollte dabei ein Client den Rest nicht blocken also verarbeite die Daten dann asynchron, damit die anderen Clienten davon nicht benachteiligt werden.
1000 User in einem Thread? dann laggen doch die User?!
Nanoxx™ is offline  
Old 07/10/2015, 11:05   #4
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Nein denn der Thread soll nur die Cliente verwalten. Datenverarbeitung kannst du asynchron in einem anderen Thread gestalten. Wenn du für jeden Client einen einzelnen Thread erstellst, dann geht dein System in die Knie. Alleine schon bei 100 wird das ganze anfangen zu laggen.

Außerdem empfängst du vom Nutzer ja auch keine MB sondern kB wenn nicht sogar B an Daten, demnach verbringst du wenig Zeit pro Client.
alpines is offline  
Old 07/10/2015, 14:13   #5
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 572
In einem anderen Thread in der C++ Sektion hatten wir schonmal etwas ähnliches mit wie viele Threads pro Client, ich zitiere einfach mal was ich dort gepostet hatte:
Quote:
Du solltest vielleicht über das Thread Pool System nachdenken:

Quote:
So, most real-world servers use a thread-pool approach, shown to the right. In the thread-pool approach, the main thread creates a fixed number of worker threads. The main thread is still responsible for accepting connections. As it does so, it creates request objects and places them into a data structure such as a linked list or an array. Each worker threads pulls requests out of the buffer according to some scheduling algorithm, and then produces the necessary response. Thus, the main thread can accept connections as long as memory is available, while a fixed number of threads churn away at maximum efficiency.
Quelle: Project IV:
Nun zu deiner eigentlichen Frage, Daten als Strings zu übermitteln ist der wohl schlechteste Weg den ich mir vorstellen kann. String ist ein gutes Format zu Darstellung, zur Datenübermittlung (jetzt natürlich außer du musst strings übermitteln) würde ich aber dennoch Binärwerte Nehmen. Allein wenn du die Zahl 25 Übertragen willst würden mindestens 3 Byte statt einem was nötig wäre übertragen.
warfley is offline  
Old 07/10/2015, 14:24   #6

 
Strew's Avatar
 
elite*gold: 0
Join Date: Jan 2009
Posts: 1,533
Received Thanks: 932
Also mir hat das hier sehr geholfen.



LG Strew
Strew is offline  
Reply


Similar Threads Similar Threads
Netzwerkprogrammierung
10/06/2012 - C/C++ - 5 Replies
Hi, ich würde demnächst mit der Netzwerkprogrammierung ein bisschen anfangen. Davor möchte ich aber wissen was ich alles kennen/können muss. :confused: Thx im voraus
[C++] Netzwerkprogrammierung? (Bücher)
07/04/2012 - C/C++ - 7 Replies
Hallo Leute, ich wende mich heute mit einer Frage an euch :) Ich würde gern in nächster Zeit mit der Netzwerkprogrammierung in C++ anfangen und suche Resourcen zum Selbststudium. Ich hab schon viele online tutorials gesehen die speziell an die WinSocks gerichtet waren. Dazu hätte ich direkt mal eine Frage. Gibt es nur den einen Weg über OS-interne Mittel im Netz zu kommunizieren? Ich möchte mich nicht so gerne auf ein OS beschränken und bei Netzwerkprogrammierung habe ich nicht so viel...



All times are GMT +2. The time now is 14:00.


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