Tcp Server der Website ausliest und Daten an Clienten vertei
Übersicht

Bobo2040Betreff: Tcp Server der Website ausliest und Daten an Clienten vertei |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi
Mein Spiel ist jetzt fast fertig nur habe ich mir jetzt mal ueberlegt Ob es geht das ich einen Tcp Server Starte und wenn er gestartet ist Die Daten die der Server aus einer Website ausliest an die Clienten weitergibt? Ich weiss das UDP besser ist aber ich wuerde es erstmal lieber mit Tcp Machen finde ich einfacher ![]() Und wenn der Server alle 50ms die Daten abruft dann ist das ja im Prinzip nur so als Ob einer alle 50ms auf die Website zugreift anstatt das alle Clienten alle 50ms Auf die Website zugreifen oder irre ich mich da? Und noch eine Frage brauche ich eine Gute Internet Verbindung dazu um An 10+ Clienten gleichzeitig Daten zu senden kann der Tcp Server da zusammenbrechen ? Kann der das uberhaupt alle 50-75ms an alle Clienten schicken ? Und noch eine Frage der Tcp Server ist ja nur so schnell wie mein Pc oder ? kann ich rinen Tcp Server auch auf einen Windows Server ziehen damit mein Pc u d meine Internetverbindung nicht 24/7 belastet wird... Und wenn das mit dem Server und Datenverteilung geht habt ihr ein Tutorial dazu? Habe dazu keins gefunden... ![]() Mfg |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
was willst du denn auslesen ? Webserver mit PHP / mysql werden dir viel günstiger zur Verfügung stehen ! | ||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja ich will eine Website auslesen wo ein String ausgegeben wird der von PHP ausgelsen wird
Und da wollte ich fragen ob der Tcp Server das machen kann und alle gefundenen Daten An alle Clienten senden kann... ? |
||
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
also mit php kannst du sachen durch $_POST[] und $_GET[] auslesen, die BB mitsendet.
mit BB kannst du einfach mit den StreamBefehlen arbeiten. |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man kann auch TCP-Sockets zum Empfangen von Verbindungen mit PHP erstellen, siehe http://php.net/manual/de/funct...create.php. Ich würde allerdings empfehlen, den TCP-Server nicht mit PHP zu schreiben. Nimm' einfach BB dafür.
Und gewöhne dir bitte an, in deinen Posts nur dann Zeilenumbrüche zu setzen, wenn du einen Absatz machen willst. Und das Großschreiben jedes Zeilenanfangs kann man in Gedichten machen, wenn es ein zusammenhängender Text sein soll, ist es extrem verwirrend. ZEVS |
||
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Das mit dem Grossschreiben tut mir leid macht mein Handy automatisch...
Und ich wollte ja nicht mit Php die Daten empfengen ![]() Sondern die Daten auslesen das kann ich und der Tcp Server soll dann die Website durchsuchen und die Daten die von Php durch echo ausgegeben werden , an alle anderen Cliente weitergeben... Also der Tcp Server soll eine Art Schnittstelle sein damit nicht 10leute gleichzeitig die Website anpingen damit die nur von dem Server angepingt wird ... Halt damit der Server nicht abstuerzt. Das war meine Idee und da wollte ich fragen ob es uberhaupt was bringt... Und wenn ja wie man das Inetwa macht ...Tutorial oder so dazu waere nett ![]() Weil ich steh grad aufm Schlauch ich kann zwar mit Tcp einen Server erstellen und weis auch wie man die Daten an die Clienten Schickt nur weiß ich nicht wie ich die sachen auslese und dann verteile und das als Server... |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das klingt alles immer noch konfus... Du meinst mit "Server" dein Spiel-Server und dann hast du noch einen Webserver? Warum willst du jetzt die beiden miteinander kommunizieren lassen?
Über je mehr Ecken du deine Kommunikation abwickelst, desto langsamer wird sie. Warum müssen die Daten da alle 50 ms abgefragt werden? Wenn es um Geschwindigkeit geht, nimmt man von vorn herein UDP und nicht TCP. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja genau die Sollen miteinander Kommunizieren und der Tcp Server (Spiel Server)
Soll die Daten die er vom Webserver bekommt an die Clienten schicken ![]() Und UDP benutze ich nicht weil ichs nicht blicke ![]() Man kann ja immernich spaeter auf UDP umsteigen ![]() Und alle 50-75ms weil es ein MMORPG wird also ein echtzeit Spiel ![]() |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie gesagt: Wenn es auf Geschwindigkeit ankommt, benutze UDP. Nichts wird durch zusätzliche Wege schneller, also lass die Clienten direkt mit dem Server kommunizieren.
World of Warcraft hat üblicherweise Pings von 100-150 ms und ich glaube nicht, dass man mit TCP irgendwas schnelleres erreichen kann. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm okay...
Naja 150-250ms waere auch in Ordnung... Solange die gegner keine Map spruenge machen ![]() |
||
![]() |
Pummelie |
![]() Antworten mit Zitat ![]() |
---|---|---|
TCP ist für Echtzeit vollkommen ungeeignet, zumindest in BB.
Jede TCP Kommunikation hängt das Programm komplett auf bis sie vollzogen ist. Nun gehen wir mal von einem Ping von 250ms aus. Folglich läuft dann das Spiel mit ~4 FPS... Es führt kein Weg um UDP herum. |
||
It's done when it's done. |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich glaube das du dich da Irrst ich habe eine Function in meinem Spiel die alle 50ms die x und y und hitpoints an die Datenbank schickt also mehr an Php ![]() Und das Spiel laeuft ganz normal wenn ich die Function in der Hauptschleife starte ![]() Lediglich wird MySql ueberlastet ^^ was sich aber schnell beheben laesst indem ich die Sendegeschwindigkeit runterdrehe ![]() |
||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe den Thread nicht von Anfang an verfolgt, aber wenn du vorhast ein Echtzeitspiel mit PHP/MySQL umzusetzen, wird das nicht klappen. Es ist einfach zu langsam und zudem wird dich ein Webhoster schnell nicht mehr mögen.
Die einzig sinnvolle Lösung ist UDP. Entweder über Direktverbindungen bzw. Peer-to-Peer oder einen dedizierten Server. Daten, die in Echtzeit übertragen werden müssen und auch mal verloren gehen dürfen oder in der falschen Reihenfolge ankommen dürfen (etwa Spielerpositionen) werden einfach per UDP gesendet. Daten, die sicher ankommen müssen (etwa Chatnarichten) können etweder durch eine zusätzliche TCP-Verbindung übertragen werden oder du erweiterst dein Protokoll um Mechanismen, die sicherstellen, dass alle gesendeten Daten ankommen und wieder richtig sortiert werden. Auch eine Möglickeit ist die Verwendung von SimpleUDP (findest du hier im Forum). MFG |
||
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hmm ... okay
nur verstehe ich UDP nicht so wirklich .. hat jemand von euch ein Beispiel für ein Mini Echtzeit Spiel oder sowas... Und wie soll ich die Daten verschlüsseln geht das überhaupt ? Mfg |
||
![]() |
Starwar |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zuerst solltest du dich mit dem Unterschied zwischen UDP und TCP auseinandersetzen. Da bietet sich die Wikipedia an.
Ein Beispiel zu UDP in BB findest du hier: CreateUDPStream ![]() Beispiele zu SimpleUDP liegen dem Download von SimpleUDP bei. Zum selbst Experimentieren eigent es sich (finde ich) einen Multiuser-Chat zu programmieren. Beachte bitte: Alles was du machst solltest du im lokalen Netzwerk machen, da es sonst nicht (so einfach) funktioniert. Kommunikation über das Internet hat so ihre Tücken (NATs, Firewalls). Verschlüsselung ist möglich, aber kompliziert und muss vor allem Dingen sehr gewissenhaft implementiert werden. Also stell das erstmal weit zurück. |
||
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Okay danke ![]() Ich schaus mir mal an ![]() Werdet bestimmt noch von mir hören xD EDIT: So eben die SimpleUDP angeschaut und die ist nix für mich ... was ich nichtmal ansatzweise verstehe will ich nicht benutzen ![]() Und es gibt echt wenige UDP Tutorials... kennt ihr ein gutes ? Bin am suchen aber nix anständiges was ich verstehe bis jetzt gefunden ![]() EDIT2: Habe mir eben das Tutorial angeschaut https://www.blitzforum.de/foru...hlight=udp und ich muss sagen soo schwer ist UDP nicht ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
seimir nicht böse, aber ich glaube deine Aussage nicht dass dein Spiel schon fast fertig ist.
nach dem was du hier und in anderen Themas so fragst glaube ich dass du noch einen weiten Weg vor dir hast. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm naaa nicht so wirklich ![]() Offline ist es bis auf das sich das Schiff drehen soll fertig ![]() Nur wollte ich es halt gerne Online machen und die Funktion zum verarbeiten der bekommenen Daten habe ich schon ![]() Nur habe ich mal so ein bisschen rumgespielt und irgendwie sagt er InvalidUDP Handle... Kann mir einer Da helfen.. mein Code : BlitzBasic: [AUSKLAPPEN]
Und dann noch den Clienten BlitzBasic: [AUSKLAPPEN]
Die INT_IP() Function habe ich einfach so aus dem Tutorial übernommen ... EDIT: Ahhh bin ich blöd xD Habe vergessen die Variable "udp" Global zu machen ![]() |
||
Bobo2040 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hmm okay...
ich dreh irgendwie bald durch... es funktioniert zwar das der CLient dem Server permanent sachen schickt aber nicht andersrum ![]() irgendwie schickt der Server nichts ich weiß das er nichts schickt weil RecvUDPMsg() Null ist ![]() Habe viel rumprobiert und dann auch ne Menge überprüfungen weggemacht ... Aber irgendwie komme ich nicht drauf was ich Falsch mache ... Hier ist mal mein Code... Server BlitzBasic: [AUSKLAPPEN]
Client BlitzBasic: [AUSKLAPPEN]
EDIT: Sry für Doppelpost ... kann jemand die zusammenfügen ? |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group