1

クラスを転送するために、Socket の ObjectStream を使用しました。クライアントは同じクラスで 2 つの異なるデータを転送しますが、サーバーは最初のデータと同じ 2 番目のデータを取得します。変です!

クライアントの私のコードは次のとおりです。

public Client()
{   
        MessageClass messageobject=new MessageClass("login");
        messageobject.SetLoginUserInfo("18580409","12345","magicgiant");

    try
    {
        client=new Socket("localhost",1234);
        System.out.println("Connected!");
        ObjectOutputStream out=new ObjectOutputStream(client.getOutputStream());
        out.writeObject(messageobject);
        out.flush();
        System.out.println(1);

        messageobject.inquire=true;
        messageobject.SetLoginUserInfo("122131","21312","dfsd");
        out.writeObject(messageobject);
        out.flush();
        System.out.println(2);
    }
    catch(Exception e)
    {
        System.out.println(e);
    }
}

ここに私のサーバーがあります:

public void run()
{  
  try
  {
     is=new ObjectInputStream(client.getInputStream());
  }
  catch (Exception ex)
  {
     System.out.println(ex);
  }

  while(true){

   try
   {  
      MessageClass messageobject = (MessageClass)is.readObject();   
      System.out.println(messageobject.GetLoginId()+messageobject.GetLoginPassword());
      idSocketItem = new IdSocket(messageobject.GetLoginId(),client,messageobject);
      s.idSocketList.addElement(idSocketItem);
    }
    catch (Exception ex)
    {
       System.out.println(ex);
     }

   }    
}

サーバーの System.out は、

1858040912345
12213121312

しかし、本当の結果は

1858040912345
1858040912345

flush()をキャンセルしようとしましたが、機能しません。問題はどこだ?

4

1 に答える 1