Java Server Socket

Joel

Legendäres Mitglied
Hallo,

Ich möchte sowas wie "Server Socket Listeners" folgendermassen einrichten:

service1.domain.com PORT 7777 IP 83.246.78.144
service2.domain.com PORT 7777 IP 83.246.78.144
service3.domain.com PORT 7777 IP 83.246.78.144
service4.domain.com PORT 7777 IP 83.246.78.144

Ist es möglich, in der selben Java-Applikation diese Listeners einzurichten? Oder bekommt die Java-Applikation gar nichts von der Domain mit mit welcher der service aufgerufen wurde?

Greets,
Joel
 
Im Prinzip kannst Du in einer Java-App soviele Listeners haben wie Du willst. Ich bin zwar nicht wirklich ein Java-Spezialist, aber ich meinte ich hab sowas auch schon mal gemacht.

Was nicht geht, ist verschiedene Listeners (oder Applikationen/Services) an dieselbe IP/Port-Kombination zu binden. Du müsstest also verschiedene IPs und/oder Ports verwenden.

Die Domain interessiert den Socket erstmal nicht, der ist nur für die reine IP-Verbindung zuständig. Die Applikation weiss eigentlich nur dann, welche Domain aufgerufen wurde, wenn der Domainname in den Daten irgendwo enthalten ist. Am besten sieht man das am Beispiel eines HTTP-Requests:

GET /de HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, application/x-shockwave-flash, */*
Accept-Language: de-ch
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)
Host: www.switch.ch
Connection: Keep-Alive

Hier ist die Domain im Parameter "Host" enthalten.

Griessli
Irene
 
QUOTE
Die Applikation weiss eigentlich nur dann, welche Domain aufgerufen wurde, wenn der Domainname in den Daten irgendwo enthalten ist.



Ich habe nur eine IP. Da es jedoch ein Standard-Protokoll ist sollten alle Services auf dem gleichen Port laufen.

Gibts etvl. sowas wie eine DNS-Umleitung:

CODE
service1.domain.com PORT 7777 -> IP 83.246.78.144 PORT 17001
service2.domain.com PORT 7777 -> IP 83.246.78.144 PORT 17002
service3.domain.com PORT 7777 -> IP 83.246.78.144 PORT 17003



Oder einen anderen Hack damit sowas realisierbar wäre? (Host im Header mitgeben ist nicht möglich).

Greets,
Joel
 
DNS hat mit Ports nix am Hut, das macht wirklich nur die Auflösung von Domain in IP.

Wenn Du nur eine IP/Port-Kombination benutzen kannst und der Host nicht mitgegeben werden kann, wirds schwierig. Der Listener muss irgendwie entscheiden können, welche Domain gefragt ist, damit er die weitere Verarbeitung steuern kann. Wenn in den Daten nichts entsprechendes steht, kann er das nicht entscheiden.

Ich nehme an, Du machst den Client nicht selbst, sonst könntest Du ja die Daten beeinflussen, die da geschickt werden. Um welches Protokoll gehts denn? Vielleicht beinhaltet das ja irgendein Feld, das man zweckentfremden könnte.

Griessli
Irene



 
Es ist ein Java-IRC-Server (Chat-Server) auf Port 6667, mit der IP 83.246.78.144.

Die Server Software erlaubt es mehrere Server Instanzen innerhalb einer Applikation zu erzeugen, und mehrere Listerners für jede Instanz zu machen.

Sowas wie
Listen irc1.domain.de on Port 6667
Listen irc2.domain.de on Port 6667

Da die beiden jedoch die gleiche IP haben, kommt die meldung (Unable zu bind irc2.hardstyle.net already in use) oder sowas.

IRC Client-Server Protokoll hat jedoch keine "Host"-Angabe.

Etvl. bräuchte ich sowas wie ein Proxy der folgendes macht:
CODE
virtual-listener-1 - port 8081
virtual-listener-2 - port 8082
virtual-listener-3 - port 8083
virtual-host-1: www1.domain.com bind to: virtual-listener-1
virtual-host-2: www2.domain.com bind to: virtual-listener-2
virtual-host-3: www3.domain.com bind to: virtual-listener-3

 
Das "unable to bind..." ist genau die Meldung die besagt, dass die IP/Port-Kombination schon gebunden ist.

An so einen Proxy dachte ich auch schon, nur müsste auch dieser Proxy aufgrund von "irgendetwas" entscheiden können, welche Domain eine bestimmte Verbindung verlangt. Und dieses "irgendetwas" hast Du nicht. Es sei denn, im IRC Protokoll ist sowas vorgesehen, aber von IRC hab ich leider keine Ahnung. Und ob ein IRC-Client eine Umleitung unterstützt, wüsste ich auch nicht.

Griessli
Irene
 
Okay, dann gehts nicht so wie ich mir das vorgestellt hatte
sad.gif
. Trotzdem danke für die Hilfe
wink.gif
.

Das Wetter ist ja eh zu schön um zu Programmieren
smile.gif
.

Greets,
Joel
 
Zurück
Oben