Problem beim Datenempfang

mavinatic

Bekanntes Mitglied
Hallo Community,

ich bin dabei ein kleines Multiplayerspiel zu programmieren, jedoch habe nun etwas den Code überarbeitet und muss feststellen, wenn ich etwas von einem client sende, empfängt mein Server nichts, obwohl er in einer while(true) schleife hängt:

Mein Server(ausschnitt, wo er Daten empfängt):

threadRunning ist IMMER true, ich habe noch nichts programmiert, was den Zustand ändert.
Java:
@Override
	public void run()
	{
		while(threadRunning)
		{
			try 
			{
				if(!clientSocket.isConnected())
				{
					if(reader!=null)
					{
						String nextLine = reader.readLine();
						
						/*
						 * Test
						 */
						System.out.println(nextLine);
						
						String[] protocolParts = nextLine.split(" ");
						if(protocolParts[2]!=null)
						{
							if(protocolParts[1]!=null)
							{
								processCommand(protocolParts[1]);
							}
						}
					}	
				} else
				{
					threadRunning = false;
					reader.close();
					writer.close();
					clientSocket.close();
				}
			} catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	}

Mein SimpleClient:
Java:
public class TestClient {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws UnknownHostException 
	 */
	public static void main(String[] args) throws UnknownHostException, IOException {
		// TODO Auto-generated method stub
		Socket socket = new Socket("localhost",1234);
		PrintWriter writer = new PrintWriter(socket.getOutputStream());
		BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		writer.println("GET /commonRequest URLGS/1.0");
		writer.flush();
//		while(true)
//		{
//			System.out.println(reader.readLine());
//		}	
		writer.close();
		reader.close();
		socket.close();
	}

}
 
T

Tomate_Salat

Gast
Gibts fehler?
Ist alles korrekt initialisiert?
Wie/wo und wann erstellst du den reader?
 

mavinatic

Bekanntes Mitglied
Java:
package com.urlserver.customizing;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

import com.urlserver.server.AbstractConnection;
import com.urlserver.server.RequestException;
import com.urlserver.server.URLServer;

public class ClientConnection extends AbstractConnection {
	private URLServer server = null;
	private PrintWriter writer = null;
	private BufferedReader reader = null;
	private Socket clientSocket = null;
	
	private boolean threadRunning = true;
	
	private final String PLAYERNAME = "PLAYERNAME";
	private final String POSX = "POSX";
	private final String POSY = "POSY";
	
	public ClientConnection(URLServer server, Socket socket) 
	{
		try
		{
			this.server = server;
			this.clientSocket = socket;
			this.writer = new PrintWriter(socket.getOutputStream());
			this.reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
						
			this.start();
		} catch(Exception e)
		{
			e.printStackTrace();
		}
	}

	@Override
	public void send(String strMessage) 
	{
		if(writer!=null)
		{
			writer.println(strMessage);
			writer.flush();
		}
	}

	@Override
	public void processCommand(String strMessage) 
	{
		//GET /status URLGS/1.0
		if(strMessage.contains(URLGSRequests.STATUS_REQUEST))
		{
			String xml = server.getStatusAsXML();
			send(xml);
		}
		//GET /initRequest URLGS/1.0
		if(strMessage.contains(URLGSRequests.INIT_REQUEST))
		{
			Player[] players = server.getRepository().getPlayers();
			String xml = "<?xml version=\"1.0\"?><RESPONSE TYPE=\"INIT\"><PLAYERS>";
			for(Player currentPlayer:players)
			{
				xml += "<PLAYER>" +
						"<PLAYERNAME>"+currentPlayer.getPlayerName()+"</PLAYERNAME>" +
						"<X>"+currentPlayer.getX()+"</X>" +
						"<Y>"+currentPlayer.getY()+"</Y>" +
						"<IMAGE>"+currentPlayer.getCurrentImageName()+"</IMAGE>" +
						"</PLAYER>";
			}
			xml += "</PLAYERS></RESPONSE>";
			
			send(xml);
		}
		//GET /commonRequest URLGS/1.0
		if(strMessage.contains(URLGSRequests.COMMON_REQUEST))
		{
			Player[] players = server.getRepository().getPlayers();
			String xml = "<?xml version=\"1.0\"?><RESPONSE TYPE=\"COMMON\"><PLAYERS>";
			for(Player currentPlayer:players)
			{
				xml += "<PLAYER>" +
						"<PLAYERNAME>"+currentPlayer.getPlayerName()+"</PLAYERNAME>" +
						"<X>"+currentPlayer.getX()+"</X>" +
						"<Y>"+currentPlayer.getY()+"</Y>" +
						"<IMAGE>"+currentPlayer.getCurrentImageName()+"</IMAGE>" +
						"</PLAYER>";
			}
			xml += "</PLAYERS></RESPONSE>";
			
			send(xml);
		}
		//POST /addPlayer?playerName=Testplayer&posX=15&posY=20 URLGS/1.0
		if(strMessage.contains(URLGSRequests.ADD_PLAYER))
		{
			String[] questionMarkSplit = strMessage.split("?");
			if(questionMarkSplit[1]!=null)
			{
				String playerName = new String();
				int posX = 0;
				int posY = 0;
				
				String[] params = questionMarkSplit[1].split("&");
				for(int i=0;i<params.length;i++)
				{
					String[] keyValuePair = params[i].split("=");
					if(keyValuePair[0].toUpperCase().equals(PLAYERNAME))
					{
						playerName=keyValuePair[1];
					}
					if(keyValuePair[0].toUpperCase().equals(POSX))
					{
						posX=Integer.parseInt(keyValuePair[1]);
					}
					if(keyValuePair[0].toUpperCase().equals(POSY))
					{
						posY=Integer.parseInt(keyValuePair[1]);
					}
				}
				
				Player player = new Player();
				player.setPlayerName(playerName);
				player.setX(posX);
				player.setY(posY);
				
				String xml = "";
				try {
					server.getRepository().createPlayer(player);
					xml = "<?xml version=\"1.0\"?><RESPONSE TYPE=\"COMMIT\">SUCCESS</RESPONSE>";
				} catch (DataRepositoryException e) {
					xml = "<?xml version=\"1.0\"?><RESPONSE TYPE=\"COMMIT\">EXCEPTION:"+e.getMessage()+"</RESPONSE>";
				}
							
				send(xml);
			}
		}
		//POST /positionRefresh?playerName=Testplayer&posX=12&posY=99 URLGS/1.0
		if(strMessage.contains(URLGSRequests.POSITION_REFRESH))
		{
			String[] questionMarkSplit = strMessage.split("?");
			if(questionMarkSplit[1]!=null)
			{
				String playerName = "";
				int posX = 0;
				int posY = 0;
				
				String[] params = questionMarkSplit[1].split("&");
				for(String param:params)
				{
					String[] keyValuePair = param.split("=");
					if(keyValuePair[0].toUpperCase().equals(PLAYERNAME))
					{
						playerName = keyValuePair[1];
					}
					if(keyValuePair[0].toUpperCase().equals(POSX))
					{
						posX = Integer.parseInt(keyValuePair[1]);
					}
					if(keyValuePair[0].toUpperCase().equals(POSY))
					{
						posY = Integer.parseInt(keyValuePair[1]);
					}
				}
				
				Player player = server.getRepository().getPlayer(playerName);
				if(player!=null)
				{
					player.setX(posX);
					player.setY(posY);
				} else
				{
					throw new RequestException(RequestException.REQUEST_ERROR_NO_PLAYER_FOUND+URLGSRequests.POSITION_REFRESH);
				}
			}
		}
		//POST /removePlayer?playerName=Testplayer URLGS/1.0
		if(strMessage.contains(URLGSRequests.REMOVE_PLAYER))
		{
			String[] questionMarkSplit = strMessage.split("?");
			if(questionMarkSplit[1]!=null)
			{
				String playerName = "";
				String[] params = questionMarkSplit[1].split("&");
				for(String param:params)
				{
					String[] keyValuePair = param.split("=");
					if(keyValuePair[0].toUpperCase().equals(PLAYERNAME))
					{
						playerName = keyValuePair[1];
					}
				}
				
				Player player = server.getRepository().getPlayer(playerName);
				if(player!=null)
				{
					String xml = "";
					try {
						server.getRepository().deletePlayer(player);
						xml = "<?xml version=\"1.0\"?><RESPONSE TYPE=\"COMMIT\">SUCCESS</RESPONSE>";
					} catch (DataRepositoryException e) {
						xml = "<?xml version=\"1.0\"?><RESPONSE TYPE=\"COMMIT\">EXCEPTION:"+e.getMessage()+"</RESPONSE>";
					}
				} else 
				{
					throw new RequestException(RequestException.REQUEST_ERROR_NO_PLAYER_FOUND+URLGSRequests.REMOVE_PLAYER);
				}
			}
		}
	}

	@Override
	public void run()
	{
		while(threadRunning)
		{
			try 
			{
				if(!clientSocket.isConnected())
				{
					if(reader!=null)
					{
						String nextLine = reader.readLine();
						
						/*
						 * Test Purposes
						 */
						System.out.println(nextLine);
						
						/*
						 * URLGS Protocol Validation
						 */
						String[] protocolParts = nextLine.split(" ");
						if(protocolParts[2]!=null)
						{
							if(protocolParts[1]!=null)
							{
								processCommand(protocolParts[1]);
							}
						}
					}	
				} else
				{
					threadRunning = false;
					reader.close();
					writer.close();
					clientSocket.close();
				}
			} catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	}
}

Bei jedem Verbinden, werden die Daten Objekte übergeben im Konstruktor. Fehler gibt es keine, es kommt lediglich nichts an. Initialisiert ist alles korrekt, meiner Meinung nach.


In der Mainclass:
Java:
public void start()
	{
		try
		{
			serverSocket = new ServerSocket(serverPort);
			
			System.out.println(welcomeMessage);
			
			while(true)
			{
				Socket client = serverSocket.accept();
				
				System.out.println("Client connected: "+client.getInetAddress().getHostAddress());
				
				AbstractConnection aConnection = new ClientConnection(this, client);
			}
			
		} catch(Exception e)
		{
			e.printStackTrace();
		}
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
R Problem beim Programmieren eines Chatprogramms Netzwerkprogrammierung 5
S Umstellung AS400 auf Postgre - Problem beim Arbeiten mit Metadaten Netzwerkprogrammierung 2
G Socket NIO2 Problem mit AsynchronousSocketChannel beim Schließen Netzwerkprogrammierung 3
D RMI Problem beim shutdown von verteilter CORBA-Anwendung Netzwerkprogrammierung 6
N NIO Problem beim speziellen Behandeln von einzelnen Benutzern Netzwerkprogrammierung 13
E HTTP Problem beim Auslesen von Websiten Netzwerkprogrammierung 6
Y Problem mit ObjectInputStream beim lesen vom Socket Netzwerkprogrammierung 10
P HTTP Problem beim Download von einer Datei Netzwerkprogrammierung 4
I Problem beim empfangen von Daten (Zahlen) Netzwerkprogrammierung 7
Rontu Problem beim Übertragen einer Datei Netzwerkprogrammierung 9
J Problem beim Senden von File Netzwerkprogrammierung 4
V Problem beim Senden von Dateien Netzwerkprogrammierung 4
P problem beim schließen eines Streams Netzwerkprogrammierung 6
C Session Problem beim Zugriff auf Webseiten Netzwerkprogrammierung 3
I Apache http-client: Problem beim Proxyaufruf Netzwerkprogrammierung 2
C RMI: Problem beim Aufruf einer Methode. Falsch gecastet? Netzwerkprogrammierung 8
D Problem beim holen einer PHP-Seite via HttpClient Netzwerkprogrammierung 19
J Problem beim versenden von eigenen Objekten über RMI Netzwerkprogrammierung 2
R Problem beim Senden von Emails (Javamail) Netzwerkprogrammierung 2
M problem beim schicken von XML-DAtenpacketen via TCP Netzwerkprogrammierung 3
D Performance Problem beim File senden, empfangen Netzwerkprogrammierung 4
I Socket Problem mit den WebSocket Antworten der Discord API Netzwerkprogrammierung 0
K Java Websocketserver Problem | Android to Pi Netzwerkprogrammierung 1
C RMI Produzent-Verbraucher-Problem - Code review Netzwerkprogrammierung 12
B Socket Bilder verschicken via Sockets. Heap-Problem. Netzwerkprogrammierung 2
S Problem bei dem Bluetoothverbindungsaufbau Netzwerkprogrammierung 2
G Server-Client IO Problem Netzwerkprogrammierung 6
M Netty - TCP Problem Netzwerkprogrammierung 4
L Socket Problem mit Server Netzwerkprogrammierung 1
J Chat Server starten über GUI problem Netzwerkprogrammierung 4
M Problem bei Socket (MultiplayerSpiel) Netzwerkprogrammierung 4
M Socket CDI, Websocket reference Problem ! Netzwerkprogrammierung 2
Shams Problem mit Eventbus in Verbindung mit Server Netzwerkprogrammierung 0
G apache httpClient Problem. Netzwerkprogrammierung 5
H Problem mit ObjectStreams Netzwerkprogrammierung 3
D Socket BufferedWriter/Reader Problem Netzwerkprogrammierung 1
Maxim6394 Problem mit Socks5 Implementierung Netzwerkprogrammierung 0
C Handle Connection Problem Netzwerkprogrammierung 3
E HttpUrlConnection Cookie Problem Netzwerkprogrammierung 0
X Problem mit vielen Bytes über Socket Netzwerkprogrammierung 23
O 4Gewinnt Multiplayer - Netzwerk Problem (TCP) Netzwerkprogrammierung 1
A Socket Socket-Problem - Object wird nicht übertragen Netzwerkprogrammierung 3
E einfaches Problem: Session-Handling bei Servlets Netzwerkprogrammierung 5
G Problem mit einem FileWatcher Netzwerkprogrammierung 7
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
B Client/Server Connection Problem Netzwerkprogrammierung 2
G Problem mit STATIC-Verständnis Netzwerkprogrammierung 8
J Facelets Include Rendered Problem Netzwerkprogrammierung 2
J Socket Problem mit C++/Java Netzwerkprogrammierung 20
P Problem mit Datagram-Sockets Netzwerkprogrammierung 2
G Cookie Verwaltungs Problem nach Login auf InetSeite (Wo utma-Cookie?) Netzwerkprogrammierung 18
C Socket Problem mit ObjectInput/OutputSream Netzwerkprogrammierung 7
B Socket Problem mit Netzwerkchat Netzwerkprogrammierung 21
Maxim6394 ipv6 Problem Netzwerkprogrammierung 2
Maxim6394 Proxyserver Performance Problem Netzwerkprogrammierung 11
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
C Socket Problem mit ObjectInput/OutputSream Netzwerkprogrammierung 5
B RMI und Problem mit rmic-Tool Netzwerkprogrammierung 3
C FTP storeFileStream Problem Netzwerkprogrammierung 3
N Problem über http eine Datei zu senden Netzwerkprogrammierung 4
D JavaMail - Mailsabrufen Problem (imap) Netzwerkprogrammierung 12
J HTTP Übersetzung yahoo babelfish - Zeichensatz-Problem Netzwerkprogrammierung 6
D Apache CXF, JAX-WS Problem bei Arrays - einfacher Server Netzwerkprogrammierung 2
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
M Problem mit Socket-Verbindung Netzwerkprogrammierung 2
D Thread problem Netzwerkprogrammierung 3
T Servlets JSP: Tomcat Problem Netzwerkprogrammierung 4
K Client - Server Problem Netzwerkprogrammierung 16
T RMI Problem Client-Server Netzwerkprogrammierung 2
P RMI Stub Problem Netzwerkprogrammierung 3
D Socket UDP Übertragungs Problem Netzwerkprogrammierung 7
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 2
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 6
D Problem mit ObjectInputStreams Netzwerkprogrammierung 10
D Socket Problem mit InputStreamReader Netzwerkprogrammierung 3
N CRC32 CheckSum Problem bei UDP Netzwerkprogrammierung 2
V Java Mail Api - IMAP Problem Netzwerkprogrammierung 6
P RMI Problem Netzwerkprogrammierung 4
I Problem bei Outputstreamerzeugung in anderer Klasse als Socket Netzwerkprogrammierung 5
S Socket Problem mit Objektübertragung Netzwerkprogrammierung 16
Shoox Reader / Writer Problem Netzwerkprogrammierung 2
S Problem mit 2 Serversockets unter Win XP Netzwerkprogrammierung 7
P Socket Problem mit Netzwerkverbindung über TCP Netzwerkprogrammierung 12
M RMI - Connection Problem Netzwerkprogrammierung 7
J Socket Client - Server Problem Netzwerkprogrammierung 4
M Socket Chat-Client-Problem Netzwerkprogrammierung 8
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
T Problem bei Findung der richtigen Architektur Netzwerkprogrammierung 3
AlexSpritze Authentication Problem bei WebServices Netzwerkprogrammierung 4
J Socket Problem -Proxies Netzwerkprogrammierung 2
R HTTP Problem bei Authentifizierung über (Http)UrlConnection Netzwerkprogrammierung 2
F Konzept Problem Netzwerkprogrammierung 12
G NIO Sockets Architektur Problem Netzwerkprogrammierung 2
H Neues NIO problem nachricht an alle clients Netzwerkprogrammierung 3
J Client server problem Netzwerkprogrammierung 3
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
W RMI Problem Netzwerkprogrammierung 4
M Problem mit Server Netzwerkprogrammierung 5
N Socket Java server c# client problem Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben