Java-Sockets funktioniert über LAN, aber kein Internet?

Hallo, ich mache ein Java multiplayer-Spiel und alles funktioniert einwandfrei.
Es hat alle jemanden brauchen würde, aber ich fand ein problem, es nutzt ServerSocket für server und Socket-für Kunden, funktioniert gut, aber das große problem ist, dass es nicht funktioniert über weltweit. Nur LAN, ich habe sogar versucht Hamachi, aber das hat nicht funktioniert, auch.

Haben Sie irgendwelche Ideen, was funktionieren würde?

Paar mehr Infos: ich benutze einen bestimmten thread im server für das akzeptieren, senden und empfangen von sockets und auch bestimmten thread im client zum senden und empfangen. Es sendet ein Objekt, das ich gemacht und enthält alle Informationen.

ip = InetAddress.getLocalHost().getHostAddress() + ":" + port;

server = new ServerSocket();

//This asks you if you want to use a specific IP or just the one that we got in first line
String socketaddress;
socketaddress = (String) JOptionPane.showInputDialog(null, "IP: ", "Info",JOptionPane.INFORMATION_MESSAGE,null,null,InetAddress.getLocalHost().getHostAddress());
server.bind(new InetSocketAddress(socketaddress, port));

//Here it starts the accept thread, and then it starts send and receive threads
new Thread(accept).start();

Hier ist das Zeug aus dem client, das finde ich am wichtigsten:

socket = new Socket(ip,port);

String set_username = System.getProperty("user.name");
set_username = (String) JOptionPane.showInputDialog(null, "Username: ", "Info", JOptionPane.INFORMATION_MESSAGE,null,null,set_username);
username = set_username;

//It sends the username to server
ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(username);

//Then server responds with a message
ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
String response = (String) ois.readObject();

//This writes the server' message   
JOptionPane.showMessageDialog(null, response, "Message",JOptionPane.INFORMATION_MESSAGE);

Außerdem habe ich ein weiteres problem, die buchsen nehmen wie 3 oder 4 Sekunden, um aus 1-client zum anderen und es sollte fast instant, weil es auf dem gleichen Netzwerk und ich habe eine schnelle Internetverbindung.

BEARBEITEN:
Ich habe versucht einen server erstellen auf dem gleichen pc mit client und dann, wenn der Beitritt mit Hilfe meine Globale IP hat nicht funktioniert 🙁

BEARBEITEN:
SEINE ARBEITEN IM SO GLÜCKLICH JETZT HATTE ich ZU TUN IST, FÜGEN Sie die PORTS IN den FIREWALL-vielen DANK JUNGS :D. JETZT KANN ich MIT MEINEN FREUNDEN SPIELEN :3

Was meinst du es funktioniert nicht weltweit? Sind Sie sicher, dass Sie korrekt port forwarding?
Ja, ganz sicher, und die firewall auch.
Und ein Benutzer auf das internet mit telnet auf einen Dienst auf Ihrem Computer unter Verwendung nur der hostname/IP und port-Nummer?

InformationsquelleAutor IvanDonat | 2012-04-10

Schreibe einen Kommentar