# Client Server Connection



## SnauceSnauce (1. Sep 2014)

Hallo ich habe ein Frage bezüglich meines Servers.
Es ist nur ein einfacher Echo-Server.


```
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 

```
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


----------



## Gamma (1. Sep 2014)

Hast du die entsprechenden Ports denn in der Firewall freigegeben? (Frag ich jetzt einfach mal ohne das getestet zu haben  ).


----------



## SnauceSnauce (1. Sep 2014)

Muss ich diese im Router sowie im Antivierenprogramm freigeben?


----------



## Gamma (1. Sep 2014)

Alles was die Kommunikation blockt musst du freigeben, also in der Software-Firewall (etwa Antivirenprogramm) und im Router.


----------



## SnauceSnauce (2. Sep 2014)

Ich habs im Router und Virenprogramm freigeschaltet, aber wenn ich meine IP adresse statt "localhost" eingebe kann ich von meinem eigenen PC auch nicht mehr auf den Server connecten.


----------

