Hallo Ich mache ein Java-Multiplayer-Spiel und alles funktioniert gut. Es hat alles, was jemand brauchen würde, aber ich fand ein Problem, es verwendet ServerSocket für Server und Socket für Clients, funktioniert gut, aber das große Problem ist, dass es nicht weltweit funktioniert. Nur LAN, ich habe sogar Hamachi ausprobiert, aber das hat auch nicht funktioniert.Java Sockets funktionieren über LAN, aber nicht über das Internet?
Haben Sie irgendwelche Ideen, was funktionieren würde?
Weitere Informationen: Ich verwende einen bestimmten Thread im Server für das Akzeptieren, Senden und Empfangen von Sockets und auch bestimmte Thread in Client zum Senden und Empfangen. Es sendet ein Objekt, das ich gemacht habe 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();
ist hier Material von Client, die ich am wichtigsten finden:
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);
Auch habe ich ein anderes Problem, die Sockel nehmen wie 3 oder 4 Sekunden von 1 Client zum anderen zu gelangen, und es sollte sein fast augenblicklich, weil es im selben Netzwerk ist und ich ein schnelles Internet habe.
EDIT: Ich habe versucht, einen Server auf demselben PC mit Client erstellen und dann bei der Verwendung meiner globalen IP-Verbindung, es hat nicht funktioniert :(
EDIT: seine Arbeits IM SO GLÜCKLICH IM AUGENBLICK allem hatte ich ZU TUN IST HINZUFÜGEN PORTS IN FIREWALL DANKE SO VIEL GUYS: D. Jetzt kann ich mit meinen Freunden spielen: 3
Was meinst du, es funktioniert nicht weltweit? Sind Sie sicher, dass Sie _port forwarding_ korrekt eingerichtet haben? – scientiaesthete
Ja, absolut sicher, und Firewall auch. – IvanDonat
Und ein Benutzer im Internet kann Telnet zu einem Dienst auf Ihrem Computer nur mit dem Hostnamen/IP-und Port-Nummer? –