Client-Server wie in Teewars/Teeworlds

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Yogi
User
Beiträge: 80
Registriert: Montag 21. Januar 2008, 16:35
Wohnort: Bonner

Sonntag 6. April 2008, 22:52

Hi, ich habe noch nicht raus gefunden, wie die Entwickler von Teewars bzw. jetzt Teeworlds es geschafft haben, dass ein Client keine Ports offen haben muss um sich mit einem Server zu verbinden. Ich ging immer davon aus, dass das immer sein muss.

Der Server muss den Port 8303 auf haben um Verbindungen zu erlauben, aber ich verstehe nicht warum Clients nichts tun müssen.

Das interessiert mich nun sehr, da ich genau so ein Verhalten für mein Python-Projekt gebrauchen könnte.

Hat da jemand eine Idee?
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Montag 7. April 2008, 05:54

Hi

Also ein Port offen heisst für eingehende Verbindungen offen.
Häufig ist es so dass alle/viele Ports für asgehende Verbindungen offen sind jedoch keine/wenige für eingehende.

Also kann üblicherweise ein Client ohne einen Port für eingehende Verbindungen zum Server verbinden (Wie z.B. der Browser zum Webserver) und kann mit dem kommunizieren.

Der Server muss dann auf diesem Port lauschen und die Verbindung annehmen.

Gruss
Yogi
User
Beiträge: 80
Registriert: Montag 21. Januar 2008, 16:35
Wohnort: Bonner

Montag 7. April 2008, 10:13

aber geht der Browser nicht über den 80er Port, der eigentlich eh immer offen ist?

Und warum brauchen die ganzen kommerziellen Spiele (FarCry etc) so viele Ports offen im Vergleich? Da ist doch auch einer der Server (wie in Teeworlds) und die anderen sind die Clienmuss ts und brauchen trotzdem zig freigegebene TCP und UDP Ports. Die Authentifizierung an den Hauptserver müsste doch eigentlich auch anders funktionieren können.
Der Server muss dann auf diesem Port lauschen und die Verbindung annehmen.
Wie viele Clients können denn maximal an einem Serverport bedient werden? Ich weiss nicht, ob man die Verbindung kurz kappen kann für die anderen Clients.
BlackJack

Montag 7. April 2008, 11:49

Ich glaube Du solltest erst einmal Netzwerkgrundlagen lernen. Man "spricht" zum Beispiel nicht mit ServerSockets, die sind nur zum Verbinden da, die Kommunikation läuft dann über andere Sockets. Also braucht man keine Verbindungen "kurz kappen", sondern muss nur dafür sorgen, dass die ganzen Sockets auch asynchron, zum Beispiel über Threads, vom Server bedient werden.

Und bei der ersten Frage bin ich mir auch nicht so sicher, wie die gemeint ist. Verbindungen zu Port 80 auf anderen Rechnern sind bei Clients in der Regel erlaubt. Verbindungen zu Port 80 auf einem Rechner machen natürlich nur Sinn, wenn da auch ein Dienst läuft.
Yogi
User
Beiträge: 80
Registriert: Montag 21. Januar 2008, 16:35
Wohnort: Bonner

Montag 7. April 2008, 12:00

Ich glaube Du solltest erst einmal Netzwerkgrundlagen lernen.
Auf jeden Fall, bin auch schon dabei, bin aber noch nicht so weit vorgedrungen ;) Ich lese und arbeite gerade das Buch Linux-Server mit Debian von Eric Amberg durch, sehr schön, aber nichts zum durchhuschen als Linux-Rookie.

Genau genommen möchte ich nur wissen, warum ich bei Teeworlds keine speziellen Ports als Client öffnen muss, bei FC z.B. aber eine ganze Menge.

Und was die Begrenzungen dieser Methode sind.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Montag 7. April 2008, 12:25

Ein Server lauscht idR auf einem Port, der von Außen erreichbar sein muss, und mit dem sich (theoretisch) beliebig Clients verbinden können. Clients selbst müssen keine Ports offen halten, da sie selbst die Verbindung herstellen.

Warum und ob überhaupt Ports bei einem FarCry-Client offen sein müssen, lasse ich mal als Frage im Raum stehen. Mir ist davon nichts bekannt.
Yogi
User
Beiträge: 80
Registriert: Montag 21. Januar 2008, 16:35
Wohnort: Bonner

Montag 7. April 2008, 13:32

UBI.com ports:

TCP: 40000 - 42999
UDP: 41005

FarCry game ports:

Server:

Outgoing port 49001/49002
Incoming is client dependant

Client:

Ingoing port is 49001/49002
Outgoing is client dependant (usually set by the OS automatically)


- In a few cases, these ports may be blocked by your ISP. If you are not behind a firewall/router, please contact your ISP with this port information to verify whether or not these ports are available to you.

- Users with Windows XP will want to make sure that the built-in firewall has been disabled through Windows.
To do this:
1. Go to the Control Panel and open the 'Network Connections'
2. Right-click on your network cards connection icon and choose properties.
3. Click on the 'Advanced' tab and uncheck the 'Internet Connection Firewall' box.
4. Click OK to save the settings.
Aber vielleicht braucht FC einfach nur mehr Kanäle für die Kommunikation als Teeworlds...?
Benutzeravatar
Masaru
User
Beiträge: 425
Registriert: Mittwoch 4. August 2004, 22:17

Montag 7. April 2008, 14:48

FarCry, bzw. Ubisoft Online benutzt die Ports zum einen für die Authorisation und zum anderen für die Serverregistratur.

Andere Games/Plattformen arbeiten hingegen mit anderen Techniken, wie z.B: ijji, wo die Authorisation mit dem Gameaccount über spezielle Plugins für den WebBrowser (über den das Game initial gestartet wird) in Zusammenarbeit mit speziellen .dlls hierfür erfolgt.

>>Masaru<<
Antworten