Netzwerk - Schnellsten Computer ermitteln

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
KeauHou
Beiträge: 133
Registriert: 23.06.2009 00:22
Computerausstattung: Q9550, GTX260, Corsair Dominator 4GB 1066mhz, 22" Asus 16:10
Wohnort: Vorm Monitor
Kontaktdaten:

Beitrag von KeauHou »

Das Purebasic Beispiel zu Server/Client aus der Hilfe ist im Prinzip ausreichend, zumindest um Grundsätzlihc zu sehen wie das funktioniert...
Dann würde ich das Programm erstmal so aufbauen, dass variabel entweder als Server oder als Client gestartet und auch zur Laufzeit geändert werden kann.
Denke mal mit dem Prozessorangaben und Arbeitsspeicher guckst du am besten in der winAPI Ecke.

Aber irgendwie reitzt mich das jetzt schon :D
Das müsste dann ja so in etwa ablaufen:
-Client verbindet zum Server
-Sesrver fragt die Leistung ab
-Server prüft ob die Leistung höher ist als alle bisherigen Clients
-Wenn dem so ist muss er die IP dieses Clients an alle anderen Clients schicken
-der Server startet
-die Clients + ehemaliger Server verbinden

Naja es ist schon ziemlich getrickst wie neue Clients wissen wer der Server ist aber ich bin nunmal ein Netzcoder Very Happy
Soll heißen es kann jederzeit ein Client dazukommen der den neuen Server eventuell noch nicht kennt? Da hätte ich so auf Anhieb keine konkrete Idee aber ich habs mit den Netzwerkfunktionen eh nicht so ^.^

MfG keauhou
If x = 1 and x = 2
MessageRequester("!!!", "WTF")
EndIf
Es ist möglich!
netzcoder
Beiträge: 275
Registriert: 27.08.2009 14:14
Computerausstattung: Intel Quad Core 2.5 GHz; 8GB DDR2 RAM; NVIDIA GeForce GT 130 mit 1500 MB; 2TB HDD;
Kontaktdaten:

Beitrag von netzcoder »

Das Purebasic Beispiel zu Server/Client aus der Hilfe ist im Prinzip ausreichend, zumindest um Grundsätzlihc zu sehen wie das funktioniert...
Dann würde ich das Programm erstmal so aufbauen, dass variabel entweder als Server oder als Client gestartet und auch zur Laufzeit geändert werden kann.
Das ist schon lange ready :D!

Ich werd mich dann mal an den Rest setzen!

EDIT:

Hab im Archiv folgenden Code gefunden:

Code: Alles auswählen

; English forum: http://www.purebasic.fr/english/viewtopic.php?t=3811&postdays=0&postorder=asc&start=15
; Author: Rescator (updated for PB 4.00 by Andre)
; Date: 26. March 2005
; OS: Windows
; Demo: Yes

; NOTE! You will get various results due to the overhead of actually calling 
; procedures/functions like Delay() etc. 
; But the result variations should be within a few MHz, like most Mhz results. 
Procedure.l GetCpuMhz()
  Global int64val.LARGE_INTEGER
  !FINIT
  !rdtsc
  !MOV dword [v_int64val+4],Edx
  !MOV dword [v_int64val],Eax
  !FILD qword [v_int64val]
  Delay(1000)
  !rdtsc
  !MOV dword [v_int64val+4],Edx
  !MOV dword [v_int64val],Eax
  !FILD qword [v_int64val]
  !FSUBR st1,st0
  int64val\HighPart=0
  int64val\LowPart=1000000
  !FILD qword [v_int64val]
  !FDIVR st0,st2
  !fistp qword [v_int64val]
  ProcedureReturn int64val\LowPart
EndProcedure

Debug GetCpuMhz()
Debug GetCpuMhz()
Debug GetCpuMhz()
Debug GetCpuMhz()
Debug GetCpuMhz()
So nun hab ich nen 4 Kern Porzessort mit jewahl 2500 MHz (2,5 GHz)
Aber irgendwie sagt mir das Script ja nicht wie viele Kerne ich hab.

Gibts dafür auch ne Lösung?
Benutzeravatar
KeauHou
Beiträge: 133
Registriert: 23.06.2009 00:22
Computerausstattung: Q9550, GTX260, Corsair Dominator 4GB 1066mhz, 22" Asus 16:10
Wohnort: Vorm Monitor
Kontaktdaten:

Beitrag von KeauHou »

Ganz einfach. Für jeden logischen Kern gibt es einen Schlüssel in der Registry unter KEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\.
Also mit meinem Quadcore sind dass dann die Schlüssel

Code: Alles auswählen

KEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\0
KEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\1
KEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\2
KEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\3
Darüber kriegst du auch die Taktrate: in jedem Schlüssel gibt es einen DWORD "~MHZ". Das dürfte sogar sichere sein als der andere Code ;)

Getestet unter Vista und XP funktioniert laut MSDN auch unter 2000 und Server 2003, denke dass es unter Windows 7 auf jeden Fall auch funktionieren sollte.

MfG KeauHou
If x = 1 and x = 2
MessageRequester("!!!", "WTF")
EndIf
Es ist möglich!
netzcoder
Beiträge: 275
Registriert: 27.08.2009 14:14
Computerausstattung: Intel Quad Core 2.5 GHz; 8GB DDR2 RAM; NVIDIA GeForce GT 130 mit 1500 MB; 2TB HDD;
Kontaktdaten:

Beitrag von netzcoder »

Danke! Meld mich dann bald wenn ich was hab!
Antworten