💬
Logga in
Fuska.se

Nätverk I Java

13 svar · startad

Trådstartare #1

Jag hade tänkt att göra ett program som kommunicerar med ett annat program över internet. Var svårt att hitta en bra guide men jag bestämde mig till slut för denna: http://java.sun.com/developer/onlineTraini...va2/socket.html

Den nämner portar, client och server, men, den nämner inga IP-adresser eller liknande? Så det är uppenbarligen inte rätt guide för mig.

 

Så min fråga är hur man gör ett program som kommunicerar med ett annat över internet. Om någon har en guide på det skulle jag bli glad. Ett sånt program som guiden jag länkade visar är ungefär vad jag är ute efter att göra.

Senast ändrad:

#2

Enligt http://java.sun.com/j2se/1.4.2/docs/api/java/net/Socket.html kan man använda sockets med ip adresser också.

 

Prova och gör som i guiden, men istället för kq6py skriv typ "127.0.0.1" eller något. Jag provar i morgon och slänger i hop en guide om jag lyckas.

17 Apr 2010
Trådstartare #3

Det låter rimligt, dåligt beskrivet i den guiden helt enkelt. Men jag klarar mig säkert bra med den jag länkade, ska prova nästa vecka tror jag. Skriver här om det uppstår fel.

20 Apr 2010
Trådstartare #4

Fått det att funka över lokalt nätverket nu :) Skrev bara in lokala IPn som TheCat sa och valde en port jag visste var öppen. Pingen är väldigt nära 0 :) Funkar antagligen lika bra över internet, hostat teamspeak server på den förut utan problem (9987).

 

Ska göra ett program som räknar ut ping tror jag.

edit: Var inte så svårt, 0ms säger den när jag skickar ett "asd" till servern.

 

 

Nu fick jag däremot problem. Jag bad programmet skicka till min riktiga IP (inte lokal), men då får den ingen signal. Jag provade att skicka från en client i samma nätverk till min internet-IP, men datorn med servern fick inget medelande och clienten bekräftar inte att den fått något svar. Jag skickade även clienten till en kompis och det blir samma fel för honom.

Jag har hostat teamspeak server på porten (9987) förut utan problem så jag misstänker att det är något med koden som inte stämmer.

Senast ändrad:

21 Apr 2010
#5
↗ till inlägget

Fått det att funka över lokalt nätverket nu :) Skrev bara in lokala IPn som TheCat sa och valde en port jag visste var öppen. Pingen är väldigt nära 0 :) Funkar antagligen lika bra över internet, hostat teamspeak server på den förut utan problem (9987).

 

Ska göra ett program som räknar ut ping tror jag.

edit: Var inte så svårt, 0ms säger den när jag skickar ett "asd" till servern.

 

 

Nu fick jag däremot problem. Jag bad programmet skicka till min riktiga IP (inte lokal), men då får den ingen signal. Jag provade att skicka från en client i samma nätverk till min internet-IP, men datorn med servern fick inget medelande och clienten bekräftar inte att den fått något svar. Jag skickade även clienten till en kompis och det blir samma fel för honom.

Jag har hostat teamspeak server på porten (9987) förut utan problem så jag misstänker att det är något med koden som inte stämmer.

När du öppnar sockets till lokala portar brukar brandbäggen ha lite snällare regler för blockering än när det är en anslutning från ett annat nätverk. Förresten, ping = nätverksfördröjning. Det är ganska logiskt att den är noll om du pingar dig själv =)

Prova att avaktivera brandväggen och se om den vill ansluta till dig.

Trådstartare #6

Borde det verkligen vara så eftersom jag hostat teamspeak server på samma port tidigare? Får väl stänga av windows-brandväggen och prova när jag får tid.

#7
↗ till inlägget

Borde det verkligen vara så eftersom jag hostat teamspeak server på samma port tidigare? Får väl stänga av windows-brandväggen och prova när jag får tid.

TeamSpeak's installation lade kanske in ett undantag i din brandvägg, och tog bort den när du avinstallerade servern? (Förutsatt att du gjorde det, så klart). Kan dock inte utesluta att det är fel i koden om jag inte kan se den =)

Sedan kan jag rekommendera att du använder Java's NIO-packet (non-blocking I/O).

Apache Mina är annars ett trevligt, lätthanterligt framework för client/server-sockets.

25 Apr 2010
Trådstartare #8

Jag har hittat var felet ligger.

 

try{
       socket = new Socket("192.168.1.66", 9987); //här chrashar den
       out = new PrintWriter(socket.getOutputStream(), true);
       in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
     } catch (Exception e) {
       System.out.println(e);
       System.exit(1);
     }

När jag skriver en lokal IP chrashar den inte, men när jag skriver min Internet IP gör den det. Ännu en konstig sak är att den inte går in i catch och skriver ut vad det är för fel... Programmet kör på som vanligt och när man ska använda socket så får man NullPointerException den socketen fortfarande är null.

Och om jag lägger något efter catch körs inte det heller...

 

Jag provade med avstängd windows brandvägg.

Senast ändrad:

#9
↗ till inlägget

Jag har hittat var felet ligger.

 

try{
       socket = new Socket("192.168.1.66", 9987); //här chrashar den
       out = new PrintWriter(socket.getOutputStream(), true);
       in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
     } catch (Exception e) {
       System.out.println(e);
       System.exit(1);
     }

När jag skriver en lokal IP chrashar den inte, men när jag skriver min Internet IP gör den det. Ännu en konstig sak är att den inte går in i catch och skriver ut vad det är för fel... Programmet kör på som vanligt och när man ska använda socket så får man NullPointerException den socketen fortfarande är null.

Och om jag lägger något efter catch körs inte det heller...

 

Jag provade med avstängd windows brandvägg.

Sockets är elaka och otympliga :P

Kan du pinga den IP'n med CMD?

Tycker du borde prova med Apache Mina, skicka PM om du behöver hjälp med att sätta upp det.

 

27 May 2010
#10
↗ till inlägget
↗ till inlägget

Jag har hittat var felet ligger.

 

try{
       socket = new Socket("192.168.1.66", 9987); //här chrashar den
       out = new PrintWriter(socket.getOutputStream(), true);
       in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
     } catch (Exception e) {
       System.out.println(e);
       System.exit(1);
     }

När jag skriver en lokal IP chrashar den inte, men när jag skriver min Internet IP gör den det. Ännu en konstig sak är att den inte går in i catch och skriver ut vad det är för fel... Programmet kör på som vanligt och när man ska använda socket så får man NullPointerException den socketen fortfarande är null.

Och om jag lägger något efter catch körs inte det heller...

 

Jag provade med avstängd windows brandvägg.

Sockets är elaka och otympliga :P

Kan du pinga den IP'n med CMD?

Tycker du borde prova med Apache Mina, skicka PM om du behöver hjälp med att sätta upp det.

 

Precis, Testa apache mina

Senast ändrad:

Trådstartare #11

Jag har grejjat med Apache Mina ett tag nu och det funkar bra :)

#12
↗ till inlägget

Jag har grejjat med Apache Mina ett tag nu och det funkar bra :)

Bra :rolleyes:

30 May 2010
#13

Servern är nere?

Trådstartare #14

Min chattserver är nere nu ja. Var nyss uppe i 2 timmar, kör den nån annan dag igen.

Vill du vara med i diskussionen?

Bli medlem Logga in