从客户端向主机发送对象

时间:2015-04-16 15:36:44

标签: object inputstream objectinputstream

我似乎无法在代码上找到问题,但服务器没有显示任何内容。它显示了捕获量。客户端似乎找到并设置了玩家名称和分数并发送它但我似乎无法找到这个问题,为什么服务器没有显示名称和分数。

这是我的客户:

public class Client
{
  private static final int BUFSIZE = 64;
  public static void main(String[] args) throws IOException
  {

    try
    {
                    int scores;
                    Scanner in = new Scanner(System.in);
                    Socket clntSock = new Socket("127.0.0.1", 6000);
                    System.out.println("What is the filename?");
                    String input = in.nextLine();
                    Scanner fileInput = new Scanner(new File(input));
                    ObjectOutputStream out = new 
                    ObjectOutputStream(clntSock.getOutputStream());

                    Player playerObject = new Player();

                    playerObject.setName(fileInput.nextLine());
                    System.out.println(""+playerObject.getName());

                    for (int i = 0; i < 5; i++)
                    {
                        scores = Integer.parseInt(fileInput.nextLine());
                        playerObject.setScore(scores);

                    System.out.println(""+playerObject.getScores().get(i));
                    }

                    out.writeObject(playerObject);




                    in.close();
                    fileInput.close();
                    out.close();
                    clntSock.close();

               }
               catch ( UnknownHostException ex )
               {
                 System.out.println( "Unknown host" );
               }

   }
 }

和我的主持人:

public class Host
{

 private static final int BUFSIZE = 64;
 public static void main(String[] args) throws IOException
{
  // Step 1: Create a ServerSocket.
  ServerSocket servSock = new ServerSocket(6000);
  PrintStream fileOut = new PrintStream("Datafromclient.txt");

  try
    {
      // Step 2: Wait for a connection..
      Socket clntSock = servSock.accept();
      // Step 3: Get input and output streams.
      System.out.println("Step 3: Get object input stream.,");

      ObjectInputStream objectIn = new 
      ObjectInputStream(clntSock.getInputStream());

      Player playerObjct = (Player)objectIn.readObject();

      System.out.println("The name of Player: "+playerObjct.getName());

      for(int i=0; i <5; i++)
      {
        System.out.println("Scores:"+playerObjct.getScores().get(i));
      }  

      objectIn.close();
      clntSock.close();
      // Step 5: Close connection
      objectIn.close();
      clntSock.close();
    }
    catch (ClassNotFoundException e) 
    {
      e.printStackTrace();
    }
      catch (IOException e)
    {
       System.err.println(e);
    }

  }
}

我的玩家类:

 public class Player

 private String name;
 private int playerId;
 private int bestScore;
 private static int numberOfPlayers = 0;
 private ArrayList<Integer> scores = new ArrayList<Integer>();

/* -------------- CONSTRUCTOR --------------------------------------
*/
public Player()
{

    numberOfPlayers++;
    playerId = numberOfPlayers;

}
public Player(String name)
{
    this.name = name;


}

//Create set method for setName
public void setName(String name)
{
    this.name = name;
}

//Create set method for setScores
public void setScore(int score)
{
    scores.add(score);
}

//Create get method for getPlayerId
public int getPlayerId()
{
    return this.playerId;
}

//Create get method for getName
public String getName()
{
    return this.name;
}

//Create get method for getScores
public ArrayList<Integer> getScores()
{
    return scores;
}

//Create get method for getBestScore
public int getBestScore()
{
    calculateBestScore();
    return bestScore;
}

//Method to expose the value of numberOfPlayers
public static int getNumberOfPlayers()
{
    return numberOfPlayers;
}

//Create get method for calcualteAverage
public double calculateAverage()
{
    Integer sum = 0;
    if(!scores.isEmpty())
    {
        for(Integer score : scores)
        {
            sum += score;
        }
        return sum.doubleValue() / scores.size();
    }
    return sum;

}
public void calculateBestScore()
{
    bestScore = Collections.max(scores);
}

}

1 个答案:

答案 0 :(得分:0)

我不见了

import java.io.Serializable;
public class Player implements Serializable

现在它的工作。