/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
DatagramSocket: socket closed
Fra : Daniel Jacobsen


Dato : 18-10-02 22:48

Hejsa!

Jeg har lavet mig en server-applikation og en client-application, begge i
Java. Kommunikationen foregår med UDP-pakker. Jeg har testet med 3
test-opstillinger:
1. Server og client på samme maskine (w2k) - virker perfekt
2. Server kørende på min LAN-server (Mandrake 8.2) og clienten kørende på
min kontormaskine (w2k) - virker perfekt
3. Server kørende på en Internet-server (Redhat 7.3) og clienten kørende på
min kontormaskine (w2k) -VIRKER IKKE

Ved sidste opstilling får jeg følgende fejl: "java.net.SocketException:
socket closed"

Det foregår sådan, at clienten sender en connect-request til serveren og
skal herefter modtage en bekræftelse. Koden er:

DatagramSocket socket = new DatagramSocket();
socket.setSoTimeout(5000);
DatagramPacket packet = new DatagramPacket(b, b.length,
InetAddress.getByName(serverAdress), clientPort);
byte[] receive = new byte[1536];
DatagramPacket rPacket = new DatagramPacket(receive, receive.length);
socket.send(packet);
socket.receive(rPacket); // Her bliver SocketException smidt

Pakken bliver sendt, men modtages ikke på serveren og lige idet
socket.receive(rPacket) kaldes, smides en SocketException. Den timer ikke
engang ud, men smider en SocketException med det samme.

Hvad sker der, og hvordan kan jeg løse problemet ????

Mvh. Daniel J.



 
 
Daniel Jacobsen (18-10-2002)
Kommentar
Fra : Daniel Jacobsen


Dato : 18-10-02 22:50

Der er i øvrigt een her, som har præcis samme problem:
http://forum.java.sun.com/thread.jsp?forum=11&thread=173276

/Daniel J.



Jonathan Stein (18-10-2002)
Kommentar
Fra : Jonathan Stein


Dato : 18-10-02 14:55

Daniel Jacobsen wrote:

> 3. Server kørende på en Internet-server (Redhat 7.3) og clienten kørende på
> min kontormaskine (w2k) -VIRKER IKKE

Hvad mener du mere præcist med "Internet-server"? Hvis det er en maskine med
en offentlig IP-adresse - og du sidder bag en NAT-router med en privat
IP-adresse, kommer det ikke til at virke med mindre du laver en særlig
opsætning i routeren.
Prøv med TCP, der initieres fra klienten, hvis det skal fungere i ovenstående
setup.

M.v.h.

Jonathan

p.s. Se evt. http://www.net-faq.dk/ for forklaring af forkortelser og
principper.

--
Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
(giver mulighed for eget SSL-certifikat).
http://www.jsp-hotel.dk/



Daniel Jacobsen (19-10-2002)
Kommentar
Fra : Daniel Jacobsen


Dato : 19-10-02 06:26

"Internet-server" = offentlig ip via adsl. Routeren er almindelig og
nødvendige porte er åbne.

/Daniel J.



Jonathan Stein (18-10-2002)
Kommentar
Fra : Jonathan Stein


Dato : 18-10-02 23:39

Daniel Jacobsen wrote:

> "Internet-server" = offentlig ip via adsl. Routeren er almindelig og
> nødvendige porte er åbne.

Det er ikke nok, at routeren er åben for den givne port - den skal
også vide hvilken intern IP-adresse en indkommende pakke skal sendes
videre til. Det skal opsættes manuelt, hvis forbindelsen ikke initieres
indefra (altså fra klienten med privat IP-adresse).

M.v.h.

Jonathan

--
Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
(giver mulighed for eget SSL-certifikat).
http://www.jsp-hotel.dk/



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste