How to write this in ruby

/**

So i need to make this java application into a ruby application, but im
very new to ruby (first day). I played around a bit and made a couple of
server apps.. hello server world.. and a simple chat, but i need
something where the server takes information from one client, and passes
it to a second client, after making a few changes.

Altho not shown in the code this application is a server for a game of
checkers, it takes the move that player 1 makes, inverts it and sends it
to player 2.

i been reading around on how to do this, if someone can help or point to
where i should focus my research, i would be greatful.

*/

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

public class GameServer{

   private Player players[];
   private ServerSocket server;
   private int currentPlayer;

   public GameServer()
   {

     players = new Player[ 2 ];
      currentPlayer = 0;

      // set up ServerSocket
      try {
         server = new ServerSocket( 5000, 2 );
      }
      catch( IOException e ) {
         e.printStackTrace();
         System.exit( 1 );
      }
   }
   public synchronized void changeTurn(int player, int x, int a, int b,
int c, int d){

     while ( player != currentPlayer ) {
       try {
         wait();
         }
       catch( InterruptedException e ) {
         e.printStackTrace();
         }
       System.out.println("waiting...");
       }
     currentPlayer = ( currentPlayer + 1 ) % 2;
     players[ currentPlayer ].otherPlayerMoved(x,a,b,c,d);
     if(x==0){
       currentPlayer = ( currentPlayer + 1 ) % 2;
     }

     notify(); // tell waiting player to continue

   }

   // wait for two connections so game can be played
   public void execute()
   {
      for ( int i = 0; i < players.length; i++ ) {
         try {
            players[ i ] =
               new Player( server.accept(), this, i );
            players[ i ].start();
         }
         catch( IOException e ) {
            e.printStackTrace();
            System.exit( 1 );
         }
      }

      // Player X is suspended until Player O connects.
      // Resume player X now.
      synchronized ( players[ 0 ] ) {
         players[ 0 ].threadSuspended = false;
         players[ 0 ].notify();
      }

   }

   public boolean gameOver()
   {
      // Place code here to test for a winner of the game
      return false;
   }

   public static void main( String args[] )
   {
      GameServer game = new GameServer();
      game.execute();
   }
}

// Player class to manage each Player as a thread
class Player extends Thread {
   private Socket connection;
   private DataInputStream input;
   private DataOutputStream output;
   private GameServer control;
   private int playerIndex;
   private char mark;
   protected boolean threadSuspended = true;

   public Player( Socket s, GameServer t, int num )
   {
      mark = ( num == 0 ? 'X' : 'Y' );

      connection = s;

      try {
         input = new DataInputStream(
                    connection.getInputStream() );
         output = new DataOutputStream(
                    connection.getOutputStream() );
      }
      catch( IOException e ) {
         e.printStackTrace();
         System.exit( 1 );
      }

      control = t;
      playerIndex = num;
   }

   public void otherPlayerMoved(int x, int a, int b, int c, int d)
   {
      try {
         output.writeUTF( "Opponent moved" );
         output.writeInt(x);
         output.writeInt(a);
         output.writeInt(b);
         output.writeInt(c);
         output.writeInt(d);
      }
      catch ( IOException e ) {
        e.printStackTrace();
      }
   }

   public void run()
   {
      boolean done = false;

      try {
         output.writeChar( mark );
         output.writeUTF( "Player " +
            ( playerIndex == 0 ? "X connected\n" :
                            "Y connected" ) );

         // wait for another player to arrive
         if ( mark == 'X') {
            output.writeUTF( "Waiting for another player" );

            try {
               synchronized( this ) {
                  while ( threadSuspended )
                     wait();
               }
            }
            catch ( InterruptedException e ) {
               e.printStackTrace();
            }

            output.writeUTF(
               "Other player connected. Your move." );
         }

         // Play game
         while ( !done ) {
           int x = input.readInt();
             int a = input.readInt();
             int b = input.readInt();
             int c = input.readInt();
             int d = input.readInt();

             control.changeTurn(playerIndex,x,a,b,c,d);

            if ( control.gameOver() ){
               done = true;
            }
         }

         connection.close();
      }
      catch( IOException e ) {
         e.printStackTrace();
         System.exit( 1 );
      }
   }
}

···

--
Posted via http://www.ruby-forum.com/.