Hello.
I'm working on simple real time 2D multiplayer shooter and now I started working on server.
To connect with server I decide to use DataInputStream and DataOutputStream.
For now I have simple test:
- if space key is pressed data are sending to server
- server recognizing data type and sending this data to others player (in theory)
- client/player receiving data from server
Connecting is working sending data to server and receiving also. Unfortunately weary often I'm getting wrong data
and I don’t know why.
Some code
I'm sending this data when space is pressed (this work fine)
1 2 3 4
| Connector.getInstance().getOutToServer().writeInt(667); Connector.getInstance().getOutToServer().writeInt(13); Connector.getInstance().getOutToServer().flush(); Connector.getInstance().getOutToServer().close(); |
Server thread (also working fine)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public void run() { int gameId = 0; int playerData = 0; try { iss = new DataInputStream(new BufferedInputStream(clientSocket.getInputStream())); oss = new DataOutputStream(new BufferedOutputStream(clientSocket.getOutputStream())); while (true){ gameId = iss.readInt(); if(gameId == 667) { playerData = iss.readInt(); for (int i = 0; i <= 9; i++) { if (clients[i] != null){ System.out.println("---sending: "+gameId+" "+playerData); clients[i].oss.writeInt(667); clients[i].oss.writeInt(13); clients[i].oss.flush(); } } } } } catch (IOException e) { e.printStackTrace(); } } |
Recipient thread (place where I'm geting bad data)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| public void run(){ try { while(true){ data = Connector.getInstance().getFromServer().readInt(); if(data == 667) { int i = Connector.getInstance().getFromServer().readInt(); System.out.println("byte b: " + data + " int: "+i); } Thread.sleep(1); } } catch (InterruptedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } |
The 'i' variable very often displaying strange number (0 and 155) but always should be 13 why this happening and how to fix it?
I hope it's enough information.