@Override
		public void run() {
			try {
				for (;;) {
					byte b = in.readByte();
					switch (b) {
					case 'J':
						String playerName = in.readUTF();
						viewListener.join(ViewProxy.this, playerName);
						break;
					case 'H':
						int playerNum = in.readInt();
						int leftHand = in.readInt();
						int rightHand = in.readInt();
						viewListener.setHand(playerNum, leftHand, rightHand);
						break;
					case 'N':
						String playerOne = in.readUTF();
						String playerTwo = in.readUTF();
						int currentPlayer = in.readInt();
						viewListener.newGame(playerOne, playerTwo,
								currentPlayer);
						break;
					case 'S':
						viewListener.split();
						break;
					case 'Q':
						viewListener.quit();
						break;
					default:
						System.err.println("Bad client message.");
						break;
					}
				}
			} catch (IOException e) {
			} finally {
				try {
					s.close();
				} catch (IOException e) {
				}
			}
		}