# Router behindert Chat



## JBernhard (27. Feb 2006)

hallo

wierd mal kurz eine kleine einführung in mein prog schreiben damit ihr mein problem versteht.

1. ich habe eine server-applikation und ein client-applet 
mit dem applet kann man sich am server anmelden der macht einen socket für jeden client auf und so kann man chatten 
dazu schickt der server auch alle angemeldeten user an den client somit könnte ein client mit einem anderen einen privaten chat eröffnen ohne das dies über den server geht, der server versendet nur die ip addressen der beiden partner.

Jetzt mein problem:
bei PCs in einem kleinen LAN funktioniert dies wunderpaar (wenn auf einen PC im LAN der Server läuft)

jedoch wenn der server in einem anderen LAN das mit einem Home and Office router ans inet angehängt ist läuft 
kommt keine verbindung zustande. es ist zwar der port auf dem der server  auf verbindungen horcht mit portweiterleitungen durchgeschaltet aber wenn der server zu einen client dann einen socket aufbauen will funktioniert das  nicht. Meiner meinung nach weil der Router die anderen ports nicht durchlässt.
oder ist da was anderes falsch??

und 

wie kann man das umgehen oder was soll ich ändern damit der chat funktioniert??

MFG
Bernhard


----------



## Roar (27. Feb 2006)

der benutzer muss den port bei seinem router halt entsprechend weiterleiten. 
Am einfachsten und sinnvollsten wäre es doch auch die privaten nachrichten über den server laufen zu lassen.


----------



## JBernhard (27. Feb 2006)

add: privaten nachrichten über server laufen.
Das wollte ich eh machen aber leider wurde das ausdrücklich untersagt.

leider funktioniert das nicht so gut weil ja der server einen socket mit einer  beliebigen portnummer zurückliefert. 
und außerdem ist es nie gut wenn der  user vorher noch irgend umständliche einstellungen tätigen muss.


----------



## mightymop (27. Feb 2006)

1. wieso muss der server eine verbindung zum client aufbauen? 
    das sollte logischerweise andersrum sein, Clients sollten verbindungen zum Server aufbauen, Informationen    
    beziehen und die Verbindung schließen

2. Der Server kann logischerweise keine Verbindung zum Client aufbauen. Das wird aber eher nicht an dir liegen,   
   sondern am Client, da dessen Router wohl die Verbindung blockt. Im übrigen würde in diesem Fall der Server eine 
   Clientrolle annehmen und der Client zu einem Server werden... Hast du vor ein Peer to Peer netz aufzubauen?
   Dann so: 

   Server 1 horcht an Port xyx (xyx wird vom Router an den jeweiligen Server weitergeleitet)
   Client 1 verbindet zum Server 1, fragt die nötigen IPs ab und andere Daten (alles über selbe Verbindung)
   Client 1 kann nun eine andere Verbindung zu einem anderen Server 2 aufbauen, dazu können vom Server 1 
   erhaltene IPs benutzt werden... Client 1 <> Server 2,  Client 1 <> Server 1
   Server 2 kann sowohl ein Server sein der IPs anderer Clients besitzt oder ein Client der in diesem Fall aber auch 
   ein Server ist, mit dem zu dann Daten austauschen kannst... blabla...

mfg mightymop


----------



## Bleiglanz (28. Feb 2006)

ist das ein echter Router? oder ist da viel eher NAT im spiel?

dann port-forwarding!

ist aber eine schlechte idee, programmier alles so, dass nur die Clients Sockets zum Server aufbauen


----------



## JBernhard (1. Mrz 2006)

da is NAT im spiel und das wird ja auch das problem sein
schätz ich mal


----------



## JBernhard (1. Mrz 2006)

zu mightymop


hab ich leider falsch forumliert, läuft so das der serversocket( beim server) auf eingehende Verbindungen wartet
dann kann sich client anmelden beim server und server sendet client die userliste.
Client bleibt aber solange mit dem server verbunden bis ein andere client sagt das er mit einen bestimmten client chatten will (währenddem können die clients über den server miteinander chatten), danach versendet der server die benötigte IP und beide clients trennen sich vom server. dann macht einer der clients einen server und der andere baut die verbindung zu im auf. so steht der p2p chat.

beim server könnt ich ja die portweiterleitung aktivieren (was auch gemacht ist aber no nicht so richtig funktioniert),
aber wenn ein client dann als server für die p2p verbindung wartet müsste der user im falle das er auch einen "router" mit NAT hat ja auch wieder die Portweiterleitung aktivieren. kann man das irgendwie umgehen.
schätz mal nicht oder ??


----------



## mightymop (1. Mrz 2006)

nein das kann man nicht umgehen, wäre ja auch net im sinne des erfinders


----------



## Bleiglanz (2. Mrz 2006)

> danach versendet der server die benötigte IP und beide clients trennen sich vom server. dann macht einer der clients einen server und der andere baut die verbindung zu im auf. so steht der p2p chat


kannst du prinzipiell fast vergessen

wenn sich herr huber über einen dsl-router ins internet einwählt oder in einem LAN sitzt das irgenwo über NAT ins internet geht, dann kann man normalerweise keine Sockets "zu ihm" aufbauen

grundproblem aller P2P Anwendungen...


----------



## JB (2. Mrz 2006)

naja werd mir was überlegen

danke für die tipps und ratschläge


----------

