Hoppa till innehåll

Nätverk I Java


WASD

Rekommendera inlägg

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.

Redigerat av WASD
Länk till kommentar
Dela på andra sajter

Skrivet (redigerat)

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.

Redigerat av WASD
Länk till kommentar
Dela på andra sajter

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.

Länk till kommentar
Dela på andra sajter

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.

Länk till kommentar
Dela på andra sajter

Skrivet (redigerat)

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.

Redigerat av WASD
Länk till kommentar
Dela på andra sajter

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.

 

Länk till kommentar
Dela på andra sajter

  • 1 månad senare...
Gäst nomercy421

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

Redigerat av nomercy421
Länk till kommentar
Dela på andra sajter

Gå med i konversationen

Du kan skriva nu och registrera dig senare. Om du har ett konto, logga in nu för att posta med ditt konto.

Gäst
Svara på det här ämnet...

×   Klistrade in som rich text.   Klistra in som vanlig text istället

  Endast 75 emojis är tillåtet.

×   Din länk har automatiskt inbäddats.   Visa som en länk istället

×   Ditt tidigare innehåll har återställts.   Rensa redigeraren

×   Du kan inte klistra in bilder direkt. Ladda upp eller infoga bilder från URL.

×
  • Skapa ny...