【问题标题】:Sending an object to host from a client从客户端向主机发送对象
【发布时间】:2015-04-16 15:36:43
【问题描述】:

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

这是我的客户:

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);
}

}

【问题讨论】:

    标签: object inputstream objectinputstream


    【解决方案1】:

    我不见了

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

    现在它的工作。

    【讨论】:

      猜你喜欢
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-12
      • 1970-01-01
      • 2015-05-10
      • 2015-01-08
      • 2018-02-13
      相关资源
      最近更新 更多