2017-04-03 6 views
0

Ich versuche ein Panzerspiel zusammenzustellen und habe Probleme mit dem Netzwerk. Was mache ich falsch auf dem Server ??UDP Server/Client für Spiel

Hier ist mein Server-Code:

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

class UDPServer extends Thread{ 
    private DatagramSocket socket; 
    private TanksComponent tank; 
    private InetAddress IPAddress; 
    private int port = 9876; 

    public void UPDServer() throws IOException{ 
     socket = new DatagramSocket(port); 
    } 

    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(); 
      } 
      System.out.println("RECEIVED: " + packet.getAddress() + " " + packet.getPort() + ": " + new String(packet.getData())) ; 
      IPAddress = packet.getAddress(); 
     } 
    } 
    public void sendData(byte[] data){ 
     DatagramPacket packet = new DatagramPacket(data, data.length, IPAddress, port); 
     try { 
      this.socket.send(packet); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

Hier mein Client-Code ist:

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

class UDPClient extends Thread{ 
    private InetAddress ipAddress; 
    private DatagramSocket clientSocket; 
    private TanksComponent tank; 
    private byte[] data = new byte[1024]; 
    private int port = 9876; 

    public UDPClient(TanksComponent tanksComponent) throws SocketException, UnknownHostException{ 
     this.tank = tanksComponent; 
     this.clientSocket = new DatagramSocket(); 
     this.ipAddress = InetAddress.getLocalHost(); 
    } 
    public void run(){ 

     DatagramPacket packet = new DatagramPacket(data, data.length); 
     try { 
      clientSocket.receive(packet); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      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, ipAddress, port); 
     try { 
      clientSocket.send(packet); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

ich den Code wie folgt bin Aufruf:

public void start() throws UnknownHostException, SocketException { 
     if(JOptionPane.showConfirmDialog(this, "Server") == 0){ 
      socketServer = new UDPServer(); 
      socketServer.start(); 

    }else{ 
     socketClient = new UDPClient(this); 
     socketClient.start(); 
     System.out.println("Send"); 
     socketClient.sendData("ping".getBytes()); 
    } 

Danke für die Hilfe Art Fremder !

+0

Gibt es ein Grund, warum Sie "DatagramSocket" anstelle von "Socket" gewählt haben? – jmhage

+0

Um ehrlich zu sein, habe ich so gelernt, ich bin mir nicht sicher, der Unterschied zwischen ihnen =/ – joedoee

+0

Lassen Sie mich wissen, ob meine Antwort hilft oder wenn Sie Fragen dazu haben. – jmhage

Antwort

0

Ich habe nicht eine Tonne Erfahrung mit Java Vernetzung aber fühlen Sie sich frei an einem Projekt zu suchen Ich habe vor kurzem gearbeitet: