|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 24.06.2012, 10:04 Titel: |
|
|
Ich habe zwar noch nicht das eigentliche "Doko-Server-Programm" auf Freebasic umgestellt, aber ich habe eine kleine "Pinnwand" gebaut, auf der die Clients Nachrichten senden können, um so "Dates" zum Spielen auszumachen.
Den "Pinnwand-Server" habe ich mit obigen TSNE-Code geschrieben.
Wow, kann ich nur sagen.
Die Daten kommen erheblich zuverlässiger an als beim GFA-Doko-Server, bei welchem die Clients immer mal wieder "nachfragen" müssen, weil einige Daten nicht angekommen sind.
Noch einmal ein sehr grosses Lob an ThePuppetMaster!
Eine kleine Fehlermeldung bekomme ich immer vom Freebasic-Pinnwand-Server:
Z:\DokoServer_FB\FBIDETEMP.bas(391) warning 25(0): Overflow in constant conversion
Es läuft aber dennoch alles wunderbar.
Spielt eigentlich jemand von euch Doko?
Wir können noch (nette!!) Spieler gebrauchen.
Mehr Infor hier:
http://www.hundertdrei-allerlei.de/flockenland/index.htm |
|
Nach oben |
|
|
Jojo alter Rang
Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 24.06.2012, 13:37 Titel: |
|
|
stevie1401 hat Folgendes geschrieben: | Die Daten kommen erheblich zuverlässiger an als beim GFA-Doko-Server, bei welchem die Clients immer mal wieder "nachfragen" müssen, weil einige Daten nicht angekommen sind. |
...hast du da UDP statt TCP verwendet? _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
|
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 24.06.2012, 14:46 Titel: |
|
|
Nein, TCP.
Den kleinen Fehler mit der Meldung " Overflow in constant conversion " hab ich inzwischen gefunden. Ich habe eine Variable als Integer anstatt Uinteger übergeben. |
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 25.07.2012, 17:11 Titel: |
|
|
Ich befasse mich gerade mit dem TSNE-Server.
Die sub:
Sub TSNE_NewData (ByVal V_TSNEID as UInteger, ByRef V_Data as String)
StringFromClient = V_Data
'hier kannst du jetzt deine Nachricht verarbeiten
Do
sleep 5
VerarbeiteClientMessage(StringFromClient)
loop until BedingungErfüllt=1
End Sub
..arbeitet in einem Thread, oder?
Nun begreife ich die Threads nicht so richtig. Das sind eigene Prozesse, oder?
Was passiert denn nun, wenn ich in der sub TSNE_NewData irgendeine Schleife einbaue, die auf etwas warten soll.
Stockt dann das ganze Programm oder können dann dennoch andere Clients an den Server etwas senden? |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 25.07.2012, 18:09 Titel: |
|
|
Threads laufen nebeneinander ab, d. h. du kannst durchaus einen Thread auf ein Ereignis warten lassen, während die anderen weiter ausgeführt werden. Wichtig ist allerdings, wie viel Arbeitsressourcen der Thread für sich in Anspruch nimmt - du solltest auf jeden Fall sicher stellen, dass dein Thread regelmäßig die Kontrolle an das Betriebssystem zurückgibt, damit auch andere Threads zum Zug kommen können. In FreeBASIC kannst du das z. B. durch einen regelmäßigen Aufruf eines SLEEP 1 (oder hier SLEEP 5 - in der Größenordnung ist das kein Unterschied) erreichen. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 25.07.2012, 22:39 Titel: |
|
|
Das hilft mir schon einmal weiter, vielen Dank.
Allerdings habe ich nicht vor an den Threads der TSNE zu schrauben, weil ich da keinen Durchblick habe.
Ich würde halt einfach nur eine Schleife einbauen, die, wenn eine Bedingung nicht erfüllt wird, nach einer gewissen Zeit beendet wird. |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 26.07.2012, 13:52 Titel: |
|
|
Mit
Code: | Do
sleep 5
VerarbeiteClientMessage(StringFromClient)
loop until BedingungErfüllt=1 |
kannst du eigentlich (auslastungsmäßig) nicht viel falsch machen, sofern ein einzelner Aufruf von VerarbeiteClientMessage nicht das System für längere Zeit blockiert. Wenn du die Überprüfung nur in größeren Abständen brauchst (z. B. weil es reicht, wenn die Nachricht nicht sofort, sondern in den nächsten paar Sekunden verarbeitet wird), könntest du bei Bedarf auch die Pause höher schrauben (würde ich aber nur machen, wenn du den Unterschied der Auslastung tatsächlich spüren kannst).
Wenn Threads für dich neu sind, solltest du dir unbedingt den Umgang mit Mutexen gründlich ansehen - das ist eine Sache, bei der du bei fehlerhafter / fehlenden Anwendung durchaus mal einen Programmabsturz provozieren kannst. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 29.07.2012, 09:21 Titel: |
|
|
Mit welchem Befehl kann ich denn beim Server einem Client mit Absicht den Connect verweigern? Das brauche ich ja, wenn er ein falsches Kenn-Passwort eingibt. |
|
Nach oben |
|
|
MOD Fleißiger Referenzredakteur
Anmeldungsdatum: 10.09.2007 Beiträge: 1003
|
Verfasst am: 29.07.2012, 11:05 Titel: |
|
|
Es ist ein Unterschied, ob du einen Client einfach ablehnst oder ob du ihn ablehnst, weil er ein falsches Passwort verwendet.
In deinem Fall musst du erst die Verbindung normal zulassen und dir das Passwort schicken lassen, wie sonst willst du es überprüfen. Falls das Passwort richtig ist, bleibt die Verbindung bestehen, sollte es falsch sein, disconnectest du den Client wieder. Dafür gibt es folgende Befehle:
Code: | TSNE_Disconnect(G_Client) 'Client beenden
TSNE_WaitClose(G_Client) 'Warten bis Client beendet ist |
|
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 29.07.2012, 12:41 Titel: |
|
|
Ja, das stimmt natürlich^^
Vielen Dank für die Antwort. |
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 23.08.2012, 11:43 Titel: |
|
|
So, mein Doko-Server ist inzwischen in Freebasic umgeschrieben worden und läuft prima. So gut, dass ich mich entschieden habe, ihn auf einem Linux-VServer laufen zu lassen.
Ich habe mir mal das Angebot angeschaut: vS Neptun light für 4,99
http://www.netcup.de/vserver/#vslightfeatures
Das sollte ja für einen kleinen Doko-Server langen, oder?
Meine Linux-Kenntnisse sind so..naja.
Erweiterte Grundkenntnisse, würde ich mal sagen.
Gibt es irgendwo eine Anleitung wie man einen VServer bedient?
Ich wäre über jede Hilfe dankbar |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 23.08.2012, 12:02 Titel: |
|
|
Ja, würde ich sagen.
stevie1401 hat Folgendes geschrieben: | Gibt es irgendwo eine Anleitung wie man einen VServer bedient? |
Der vServer wird genauso bedient / administriert wie ein physischer Linux-Server. Wenn du zu Hause Windows verwendest, benötigst du PuTTY, um via SSH auf den Server zuzugreifen. Die gesamte Administration erfolgt dabei über die Shell, die du von überall aus mit SSH erreichen kannst.
Wenn du nach Büchern oder Tutorials zur Administration suchst, musst du nicht speziell nach "vServer-Administration" suchen, sondern kannst nach "Linux-Server-Administration" Ausschau halten. Der vServer wird genauso administriert wie ein "echter" - mit dem einzigen wesentlichen Unterschied, dass du beim vServer nicht den Kernel auswechseln kannst. _________________
Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2507 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 24.08.2012, 20:45 Titel: |
|
|
Am besten zu Hause ein Linux-Testsystem (alter PC oder ebenfalls virtualisiert, z.B. VMware Player) einsetzen, möglichst mit derselben Distribution wie auf dem vServer. So können heiklere Operationen vorab getestet und durchgespielt werden, bevor sie auf dem produktiven vServer umgesetzt werden.
Optimal ist, wenn Du vom vServer eine 1:1-Kopie in einer Virtualisierungsumgebung bei Dir laufen lassen kannst. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 24.08.2012, 22:18 Titel: |
|
|
Och, ich habe hier genügend richtige PCs rumstehen, das soll nicht das Problem sein.
Eine Schwierigkeit sehe ich auf den VServer zuzugreifen und da Daten von zuhause aus hinzubekommen.
Konsolenbefehle sind so garnicht mein Ding, muss ich gestehen. |
|
Nach oben |
|
|
ThePuppetMaster
Anmeldungsdatum: 18.02.2007 Beiträge: 1837 Wohnort: [JN58JR]
|
Verfasst am: 24.08.2012, 22:26 Titel: |
|
|
du kannst auf einen linux vserver mit "winscp" von windows aus wie mit einem ftp programm datein hin und her übertragen.
winscp nutzt das ssh protokoll. daher musst du eigentlich bis auf einen ssh-server (der schon druf is) nix zusätzlich installieren.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
|
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 26.08.2012, 15:47 Titel: |
|
|
stevie1401 hat Folgendes geschrieben: | Och, ich habe hier genügend richtige PCs rumstehen, das soll nicht das Problem sein.
Eine Schwierigkeit sehe ich auf den VServer zuzugreifen und da Daten von zuhause aus hinzubekommen.
Konsolenbefehle sind so garnicht mein Ding, muss ich gestehen. |
dann, entschuldige, finger weg von einem vserver. lern erstmal, ein unixoides system mit der kommandozeile zu bedienen und frag in ein, zwei jahren nochmal
du kannst - wiegesagt - ziemlich viel kaputt/falsch machen, und es wäre für dich äußerst unangenehm, wenn dein server gehackt und für illegale sachen missbraucht wird. _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 26.08.2012, 16:01 Titel: |
|
|
Flo hat Folgendes geschrieben: | dann, entschuldige, finger weg von einem vserver. lern erstmal, ein unixoides system mit der kommandozeile zu bedienen und frag in ein, zwei jahren nochmal
du kannst - wiegesagt - ziemlich viel kaputt/falsch machen, und es wäre für dich äußerst unangenehm, wenn dein server gehackt und für illegale sachen missbraucht wird. |
Naja, wenn er auf dem Server nur SSH und seinen eigenen DoKo-Serverdienst laufen lässt (und keinen eventuell falsch konfigurierten MTA, FTPd, ...) und außerdem regelmäßig die Systemupdates einspielt (apt-get update && apt-get upgrade), sollte da normalerweise ja nichts schiefgehen. Es sei denn, er konfiguriert SSH ganz böse falsch oder nimmt "test" als root-Passwort... _________________
Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
Flo aka kleiner_hacker
Anmeldungsdatum: 23.06.2006 Beiträge: 1210
|
Verfasst am: 27.08.2012, 10:50 Titel: |
|
|
Sebastian hat Folgendes geschrieben: | Flo hat Folgendes geschrieben: | dann, entschuldige, finger weg von einem vserver. lern erstmal, ein unixoides system mit der kommandozeile zu bedienen und frag in ein, zwei jahren nochmal
du kannst - wiegesagt - ziemlich viel kaputt/falsch machen, und es wäre für dich äußerst unangenehm, wenn dein server gehackt und für illegale sachen missbraucht wird. |
Naja, wenn er auf dem Server nur SSH und seinen eigenen DoKo-Serverdienst laufen lässt (und keinen eventuell falsch konfigurierten MTA, FTPd, ...) und außerdem regelmäßig die Systemupdates einspielt (apt-get update && apt-get upgrade), sollte da normalerweise ja nichts schiefgehen. Es sei denn, er konfiguriert SSH ganz böse falsch oder nimmt "test" als root-Passwort... |
oder er hat einen winzigkleinen Bufferoverflow in seinem Serverdienst, mit dem man tolle Dinge anstellen kann :>
(den Serverdienst lässt er möglichst als root laufen, weil als Initscript gestartet, das erspart es mir, einen Rootexploit zu finden)
stevie, mal im Ernst: nimm den billigsten Rootserver den man kriegen kann: einen Rechner, den du noch rumstehen hast, oder eine Virtuelle Maschine auf einem Leistungsfähigen Rechner bei dir.
Dein Projekt wird (nehme ich mal an) vermutlich nicht übermäßig viele User haben, sodass du eine fette Backboneanbindung benötigst. Und einen Rechner, den du falls nötig auch mal aus dem Fenster werfen kannst, kannst du einfacher administrieren (Beispiel: du machst einen Typo bei der SSH-konfiguration, der SSH-Server beendet sich, versucht neu zu starten, scheitert an der kaputten SSH-Konfiguration. Was tust du jetzt? (mir ist klar, dass man das relativ einfach beheben kann. Wenn man weiß, wie))
Ein Riesenvorteil, wenn du den Server in deinem Haus stehen hast: du siehst und hörst, wenn er komische Dinge tut (z.B. der Lüfter auf einmal röhrt, ohne dass allzuviele Leute connected sind.)
Und, selbst wenn er gehackt wird: erstens bist du nur ein Netzwerkkabel davon entfernt, ihn stillzulegen. und zweitens können Cracker über deine (vermutlich vergleichsweise mickrige) Internetverbindung nicht so viel Schaden (z.B. via DDoS-Attacken) anrichten als über einen VServer. Und wieder: du wirst es merken, denn eine DDoS-Attacke legt i.d.R. nicht nur das Ziel, sondern auch dich lahm. _________________ MFG
Flo
Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.
zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich. |
|
Nach oben |
|
|
Sebastian Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
Verfasst am: 27.08.2012, 11:18 Titel: |
|
|
Flo hat Folgendes geschrieben: | oder er hat einen winzigkleinen Bufferoverflow in seinem Serverdienst, mit dem man tolle Dinge anstellen kann :>
(den Serverdienst lässt er möglichst als root laufen, weil als Initscript gestartet, das erspart es mir, einen Rootexploit zu finden) |
Das setzt allerdings voraus, dass jemand gezielt und von Hand den (nicht öffentlich bekannten, undokumentierten) "DoKo-Serverdienst" auf dem privaten Hobby-vServer angreift.
Ich könnte mir vorstellen, dass ungepatchte alte Standardsoftware da ein beliebteres Angriffsziel für Hacker und automatisierte Angriffstools darstellt. _________________
Der Markt regelt das! | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen! |
|
Nach oben |
|
|
stevie1401
Anmeldungsdatum: 04.07.2006 Beiträge: 133
|
Verfasst am: 15.09.2012, 08:49 Titel: |
|
|
Floh, danke für deine ehrlichen Worte
Also ich will es mal so sagen:
Zur Zeit läuft das Serverprogramm, welches inzwischen ein Freebasic-Konsolen-Programm ist, unter Windows auf einem meiner Rechner und macht nicht die geringsten Probleme. Es läuft wie ein alter VW. Nicht kaputt zu kriegen.
Unter Windows deshalb, weil ich mit Linux leider Probleme habe. Da sagt der Server immer, er kann die Ports nicht binden, warum er das nicht kann, habe ich bis jetzt nicht herausfinden können.
Selbst bei einer ausgeschalteten Firewall kann das Linux-Server-Programm die Ports nicht binden...
Natürlich hat es Vorteile, wenn der Server auf dem eigenen Rechner läuft. Es gibt allerdings auch erhebliche Nachteile.
Mein Router wählt sich ca. 2-3x täglich neu ein. In dem Moment fliegen erst einmal alle Spieler raus und wissen gar nicht was los ist.
Es gibt zwar im Client eine Hilfe, in welcher steht, dass man sich nach 1-2 Minuten neu verbinden kann, aber mit der Hilfe ist es so wie mit einer „readme.txt“ Datei. Liest kein Schwein.
Dann habe ich auch noch meine Kinder, die sehr viel mit Youtube und ähnlichen Plattformen etwas machen, was sehr viel Traffic kostet. Das wirkt sich langsam störend auf den Spielverlauf aus.
Und ich denke, dass wir demnächst etwas mehr Zulauf bekommen werden, weil wir das ganze Projekt etwas „öffentlicher“ anpreisen werden.
Bis jetzt sind wir ca. 100 angemeldete Spieler, die zwar nicht alle gleichzeitig spielen, aber ich denke, dass demnächst ca. 40-60 Spieler gleichzeitig spielen werden. Ist das noch mit einer kleinen DSL Leitung zu machen?
Und zu guterletzt bin ich auch nicht immer da.
Letztens war ich über das Wochenende weg und wie es denn so ist, war hier ein großes Gewitter mit Stromausfall. Somit fiel der Doko-Server aus und niemand war da, der den Server hätte wieder anstellen können.
Ich denke, ich komme um einen vServer nicht herum, ob ich das nun mag (oder kann) oder nicht.
Sollte der vServer mal gehakt werden, wäre das, glaube ich, nicht wirklich sooo dramatisch.
Das Flockenland-Projekt ist ein nicht-kommerzielles, privates Projekt, in welchem keinerlei private Daten gespeichert werden.
Aber wenn ich schon nicht oder nur schwer in der Lage bin einen vServer aufzusetzen, hat einer von euch vielleicht Lust am Projekt mitzuwirken?
Das wäre natürlich eine große Hilfe |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|