c/s模式下传递还是通过URL来传递吧.

解决方案 »

  1.   

    你是怎么实现writeObject和readObject接口的?代码不贴出来,没人知道问题在哪里。
      

  2.   

    CS的传送对象的方法和BS是一样的啊,都需要先序列化,然后通过协议传送到远端,同过什么协议要看你的程序环境了WebApp和WebServise是不同的。
      

  3.   

    服务器
    import java.awt.*;
    import java.net.*;
     import java.io.*;
    class ServiceThread  extends Frame implements  Runnable
    {
     ServerService FatherListener;
     Socket ConnectedClient;
     Thread ConnectThread;
     Panel ListenerPanel;
     TextArea ServerMsg;
     ServiceThread(ServerService  sv,Socket s)
     {
        FatherListener =sv;
        ConnectedClient=s;
        ConnectThread=new Thread(this);
        setTitle("answer Client");
        setLayout(new BorderLayout());
        ServerMsg=new TextArea(10,50);
        add("Center",ServerMsg);
        setResizable(false);
        pack();
        show();
        InetAddress ClientAddress=ConnectedClient.getInetAddress();
        ServerMsg.appendText("Clent connected"+"from\n"+ClientAddress.toString()+"\n");
     }
        public void  run()
        {
           try
           {       //   ObjectOutputStream  out1=new ObjectOutputStream(ConnectedClient.getOutputStream());
            //  ObjectInputStream   in1=new ObjectInputStream (new BufferedInputStream(
                                      //   ConnectedClient.getInputStream() ));
              ObjectInputStream   in1=new ObjectInputStream (ConnectedClient.getInputStream());
              PersonInfo s= (PersonInfo)in1.readObject();          while(s.name.equals("Bye")!=true)
              {
                  if(s.id==1)
                   s.id++;
                   System.out.println(s.id);
                   System.out.println(s.name);
                   System.out.println(s.telephone);
              //   out.writeObject("you 've send the following message:\n"+s.name);
               //  out.flush();
                 ServerMsg.appendText("Client is saying\n"+s.telephone);
                 s=(PersonInfo)in1.readObject();
              }
              ConnectedClient.close();       }catch(Exception e){}
           FatherListener.addMeg("Client"+"closed"+"\n");
           dispose();
        }
     }  class ServerService extends Frame
      {
        ServerSocket m_sListener;
        TextArea ListenerMeg;
        ServerService(int Port,int Count)
        {
           try
           {
              m_sListener=new ServerSocket(Port,Count);
              setTitle("server Listener");
              setLayout(new BorderLayout());
              ListenerMeg=new TextArea(10,50);
              add("Center",ListenerMeg);
              setResizable(false);
              pack();
              show();
              while(true)
              {
                 Socket Connected=m_sListener.accept();
                 InetAddress ClientAddress=Connected.getInetAddress();
                 ListenerMeg.appendText("Clinet connected from\n"+ClientAddress.toString()+"\n");
                 ServiceThread MyST=new ServiceThread(this,Connected);
                 MyST.ConnectThread.start();
              }
           }catch(IOException e){}
        }
         public void addMeg(String s)
         {
            ListenerMeg.appendText(s);
         }
         public boolean handleEvent(Event e)
         {
           if(e.id==Event.WINDOW_DESTROY)
              {
               try
            {
               System.exit(0);
            }catch(Exception ep){}
           }
            return super.handleEvent(e);
         }
      }
        class PersonInfo  implements Serializable
        {
            String name;
            int id;
            String telephone;
          PersonInfo(String name,int id,String tele)
          {
            this.name=name;
            this.id=id;
            telephone=tele;
          }
        }   public class  TestServer
       {
          public static void main(String[] args)
          {
             ServerService MyServer=new ServerService(8000,10);
          }
       }
    ////////////////////////////////////////////////////////////
     客户端
    import java.awt.*;
     import java.net.*;
     import java.io.*;
     public  class MyClient extends Frame
     {
        Socket ClientSocket;
        //PrintStream os;
        ObjectOutputStream os;
        ObjectInputStream  is;
        //DataInputStream is;
        String s;    Label MyLabel=new Label("welcome to the infomation service");
        TextArea textArea;
       // Button MyBotton=new Button("Send Message");    MyClient()
        {
             setTitle("Client Window");
             setLayout(new BorderLayout());
             textArea=new TextArea(20,50);
             add("North",MyLabel);
            // add("South",MyBotton);
             add("Center",textArea);
             setResizable(false);
             pack();
             show();
             connect();    }
        public void connect()
        {
             try
             {
                 ClientSocket=new Socket("10.10.147.246",8000);
                 os=new ObjectOutputStream(ClientSocket.getOutputStream());
                 is=new ObjectInputStream(ClientSocket.getInputStream());
                 try
             {
                PersonInfo person=new  PersonInfo("yangguang",1,"025-83474003");            os.writeObject(person);
               // os.println(textArea.getText());
                os.flush();
             }
             catch(Exception ex){}         }
             catch(Exception e){}
        }
      /*  public boolean action(Event e,Object arg)
        {
          Object target=e.target;
          if(target==MyBotton)
          {
             try
             {
                PersonInfo person=new  PersonInfo("yangguang",1,"025-83474003");
                os.writeObject(person);
               // os.println(textArea.getText());
                os.flush();
             }
             catch(Exception ex){}
              return true;
          }
         return false;
        }*/    public boolean handleEvent(Event e)
        {
            switch(e.id)
            {
                 case Event.WINDOW_DESTROY:
                 try
                 {
                    os.writeObject("bye");
                    os.flush();
                    is.close();
                    os.close();
                    ClientSocket.close();
                    System.exit(0);
                 }catch(Exception ex){}       }
           return super.handleEvent(e);
        }
          public static void main(String [] args)
          {
             new MyClient();
          }
          class PersonInfo  implements Serializable
          {
              String name;
              int id;
              String telephone;
            PersonInfo(String name,int id,String tele)
            {
              this.name=name;
              this.id=id;
              this.telephone=tele;
            }
          }
     }
      

  4.   

    你的代码写得真是...
    你把Exception都catch干吗,抛出去
    还有,PersonInfo不能是两个...
    while(s.name.equals("Bye")!=true)这里可能会死循环
    ClientSocket=new Socket("10.10.147.246",8000);这个ip对么?
    你先别急着搞这个程序,慢慢来先练好基本功再说
      

  5.   

    不批了,该批的楼上已经批了。指出问题,把这句的注释去掉!
     //   ObjectOutputStream  out1=new ObjectOutputStream(ConnectedClient.getOutputStream());
      

  6.   

    或者把这句注释掉
    is=new ObjectInputStream(ClientSocket.getInputStream());C/S端要对应。