Hallo ich habe ein Frage bezüglich meines Servers.
Es ist nur ein einfacher Echo-Server.
Dann der Server
Und der Client
package Network;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class GameClient extends Thread {
private InetAddress ipAdress;
private DatagramSocket socket;
public GameClient(String ipAdress) {
try {
this.ipAdress = InetAddress.getByName(ipAdress);
this.socket = new DatagramSocket();
} catch (UnknownHostException | SocketException e) {
e.printStackTrace();
}
}
public void run() {
while (true) {
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
try {
socket.receive(packet);
} catch (IOException e) {
e.printStackTrace();
}
String message = new String(packet.getData());
System.out.println("Server > " + message);
}
}
public void sendData(byte[] data) {
DatagramPacket packet = new DatagramPacket(data, data.length, ipAdress, 1331);
try {
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Ich hab die jar einem Freund geschickt und "localhost" mit meiner IP ausgetauscht, aber als er es gestartet hat kamm nicht das sein Client auf den Server zugegriffen hat.
Kann jemand helfen?
Danke im Vorraus
Es ist nur ein einfacher Echo-Server.
Java:
package Network;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
if (JOptionPane.showConfirmDialog(null, "Run Server") == 0) {
GameServer socketServer = new GameServer();
socketServer.start();
}
GameClient socketClient = new GameClient("localhost");
socketClient.start();
socketClient.sendData("ping".getBytes());
}
}
Dann der Server
Java:
package Network;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class GameServer extends Thread {
private DatagramSocket socket;
public GameServer() {
try {
this.socket = new DatagramSocket(1331);
} catch (SocketException e) {
e.printStackTrace();
}
}
public void run() {
while (true) {
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
try {
socket.receive(packet);
} catch (IOException e) {
e.printStackTrace();
}
String message = new String(packet.getData());
System.out.println("Client[" + packet.getAddress().getHostAddress() + ":" + packet.getPort() + "] > " + message);
if (message.trim().equalsIgnoreCase("ping")) {
sendData("pong".getBytes(), packet.getAddress(), packet.getPort());
}
}
}
public void sendData(byte[] data, InetAddress ipAdress, int port) {
DatagramPacket packet = new DatagramPacket(data, data.length, ipAdress, port);
try {
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
Und der Client
package Network;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class GameClient extends Thread {
private InetAddress ipAdress;
private DatagramSocket socket;
public GameClient(String ipAdress) {
try {
this.ipAdress = InetAddress.getByName(ipAdress);
this.socket = new DatagramSocket();
} catch (UnknownHostException | SocketException e) {
e.printStackTrace();
}
}
public void run() {
while (true) {
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
try {
socket.receive(packet);
} catch (IOException e) {
e.printStackTrace();
}
String message = new String(packet.getData());
System.out.println("Server > " + message);
}
}
public void sendData(byte[] data) {
DatagramPacket packet = new DatagramPacket(data, data.length, ipAdress, 1331);
try {
socket.send(packet);
} catch (IOException e) {
e.printStackTrace();
}
}
}
Ich hab die jar einem Freund geschickt und "localhost" mit meiner IP ausgetauscht, aber als er es gestartet hat kamm nicht das sein Client auf den Server zugegriffen hat.
Kann jemand helfen?
Danke im Vorraus