so verbinden Sie zwei Computer über dasselbe Netzwerk mit java-sockets?

Ich bin nicht in der Lage, den Anschluss von zwei verschiedenen Maschinen, die über dasselbe Netzwerk mit der folgenden client-server-Programme.
der code allerdings gut läuft auf der gleichen Maschine.
Ich denke, dass in dem client-Programm geht in eine Endlosschleife kurz vor socket.accept();
Sie schlagen eine mögliche Lösung vor.

server.java

import java.io.*;
import java.net.*;
import java.lang.*;

class server{
    public static void main(String args[]){
        try{
            int one,zero;
            one=zero=0;
            ServerSocket sock=new ServerSocket(2000);
            Socket soc=sock.accept();
            DataInputStream dis=new DataInputStream(soc.getInputStream());
            System.out.println("Connection Established");
            String msg =dis.readLine();
            System.out.println("MESSAGE : "+msg);
            for(int i=0;i<msg.length();i++){
                if(msg.charAt(i)=='0')
                    zero++;
                else
                    one++;
            }
            System.out.println("Ones are "+one);
            System.out.println("Zeros are "+zero);

            soc.close();
        }
        catch(IOException e){
            System.out.println(e);

        }
    }
}

client.java

    import java.io.*;
    import java.net.*;
    class client{
        public static void main(String args[]){
            try{
                Socket soc=new Socket("localhost",2000);//or ipv4 address for different computers
                BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
                PrintStream pr=new PrintStream(soc.getOutputStream());

                System.out.println("Enter message..");
                String msg =is.readLine();
                pr.println(msg);
                System.out.println("YOU ENTERED.."+msg);
                soc.close();
            }
            catch(IOException e){
                System.out.println(e);

            }
        }
    }
  • Hast du ändern Sie diese Zeile: Socket soc=new Socket("localhost",2000); mit der server ip?
  • ja. ich habe. ipconfig im cmd-> ipv4-Adresse
  • Überprüfen Sie Ihre firewall-Einstellungen...
  • getan. keine Probleme. es läuft in einer endlosen Schleife Socket soc=new Socket("localhost",2000);//oder ipv4-Adressen für verschiedene Rechner
  • Es soll so sein, dass in dieser Zeile: Socket soc=sock.accept();. Wenn der client nicht verbinden, Es wird ewig warten.
  • naja mein client keine Verbindung möglich ist. es funktioniert immer noch nicht. wenn ich das client-Programm es nicht einmal drucken "Eingeben, Nachricht.." so gibt es einige andere Fehler, die ich Schätze. allerdings auf dem gleichen computer funktioniert es gut
  • Nun, Erstens, können Sie einen ping-Befehl die andere box OK?
  • Der client geht nicht 'in einer endlos-Schleife'. Es gibt keine Schleife. Nicht nur erraten. Der Kunde bekommt eine Ausnahme. Post-it, und der stack-trace, die in Ihrer Frage. Entweder hast du die Ziel-IP-Adresse der Verbindung falsch, wird der server nicht in Betrieb war, oder die Computer sind nicht auf dem gleichen Netzwerk und entweder sind Sie nicht erreichbar aus einander, oder es ist eine firewall im Weg.
  • es macht ping fein mit kein Verlust. wenn ich die Linie verschieben System.aus.println("Geben Sie Nachricht.."); vor-Socket soc=new Socket("localhost",2000);//oder die ipv4-Adresse für den anderen Computer druckt die Linie. aber wenn es so ist, wie es ist in dem obigen code, wird das Programm nicht ausgeführt werden, nachdem line Socket soc=new Socket("localhost",2000);//oder ipv4-Adressen für verschiedene Rechner
  • Laufen lassen für ein paar Minuten so, es kommt tatsächlich auf die 'connection timeout', dass es offensichtlich wirft schließlich, und fügen Sie die Ausnahme, die Sie hier erhielten, zu deiner Frage. Es sieht sehr wie ein firewall-Problem.

InformationsquelleAutor programeer | 2015-03-14
Schreibe einen Kommentar